34 DBMS_COMPRESSION
DBMS_COMPRESSION
パッケージは、アプリケーションの正しい圧縮レベルを簡単に選択できるインタフェースを提供します。
この章のトピックは、次のとおりです:
34.1 DBMS_COMPRESSIONの概要
DBMS_COMPRESSION
パッケージは、データベース環境内で圧縮に関連する情報を収集します。これには、パーティション化された表およびパーティション化されていない表について圧縮率を推測し、以前に圧縮された表に関する行レベルの圧縮情報を収集するツールが含まれます。これによって、圧縮に関連した決定を行うための適切な情報が得られます。
34.2 DBMS_COMPRESSIONのセキュリティ・モデル
DBMS_COMPRESSSION
パッケージはAUTHID CURRENT USER
で定義されるため、現在のユーザーの権限で実行されます。
34.3 DBMS_COMPRESSIONの定数
DBMS_COMPRESSION
パッケージでは、パラメータ値の指定に使用できる定数が使用されます。
これらの定数を、次の表に示します。
表34-1 DBMS_COMPRESSIONの定数 - 圧縮タイプ
定数 | タイプ | 値 | 説明 |
---|---|---|---|
|
|
|
圧縮なし |
|
|
|
高度な行圧縮 |
|
|
|
問合せ用の高ウェアハウス圧縮(ハイブリッド列圧縮) |
|
|
|
問合せ用の低ウェアハウス圧縮(ハイブリッド列圧縮) |
|
|
|
高アーカイブ圧縮(ハイブリッド列圧縮) |
|
|
|
低アーカイブ圧縮(ハイブリッド列圧縮) |
|
|
|
圧縮ブロック |
|
|
|
LOB操作のための高圧縮レベル |
|
|
|
LOB操作のための中圧縮レベル |
|
|
|
LOB操作のための低圧縮レベル |
|
|
|
索引のための高圧縮レベル |
|
|
|
索引のための低圧縮レベル |
|
|
|
LOB圧縮率が見積られるオブジェクトの必要最低限のLOB数 |
|
|
|
基本表圧縮 |
|
|
|
LOB圧縮率の計算に使用されるLOBの最大数 |
|
|
|
インメモリー圧縮なし |
|
|
|
DMLのためのインメモリー圧縮レベル |
|
|
|
問合せパフォーマンスのために最適化されたインメモリー圧縮レベル |
|
|
|
問合せパフォーマンスおよび領域の節約に対して最適化されたインメモリー圧縮レベル |
|
|
|
容量を最適化するインメモリー低圧縮レベル |
|
|
|
容量を最適化するインメモリー高圧縮レベル |
|
|
|
HCC比が見積もられるオブジェクトの必要最低限の行数 |
|
|
|
オブジェクトのすべての行を使用してHCC比が見積もられたことを示します。 |
|
|
|
圧縮率を見積もるオブジェクトをタイプ表として識別します。 |
|
|
2 |
圧縮率が見積もられるオブジェクトをタイプ索引として識別します。 |
ノート:
ハイブリッド列圧縮は特定のOracleストレージ・システムの機能です。詳細は、『Oracle Database概要』を参照してください。
34.4 DBMS_COMPRESSIONのデータ構造
34.4.1 COMPRECレコード・タイプ
COMPRECレコード・タイプは、表の個々の索引圧縮率を計算するためのレコードです。
構文
TYPE COMPREC IS RECORD( ownname varchar2(255), objname varchar2(255), blkcnt_cmp PLS_INTEGER, blkcnt_uncmp PLS_INTEGER, row_cmp PLS_INTEGER, row_uncmp PLS_INTEGER, cmp_ratio NUMBER, objtype PLS_INTEGER);
フィールド
表34-2 COMPRECの属性
フィールド | 説明 |
---|---|
|
オブジェクト所有者のスキーマ。 |
|
オブジェクト名 |
|
オブジェクトの圧縮されたサンプルに使用されるブロック数。 |
|
オブジェクトの圧縮解除されたサンプルに使用されるブロック数。 |
|
オブジェクトの圧縮されたサンプルにあるブロック内の行数。 |
|
オブジェクトの圧縮解除されたサンプルにあるブロック内の行数。 |
|
圧縮比、 |
|
オブジェクトのタイプ |
34.5 DBMS_COMPRESSIONサブプログラムの要約
DBMS_COMPRESSION
パッケージでは、GET_COMPRESSION_RATIO
プロシージャおよびGET_COMPRESSION_TYPE
ファンクションのサブプログラムが使用されます。
表34-3 DBMS_COMPRESSIONパッケージのサブプログラム
サブプログラム | 説明 |
---|---|
表の圧縮比を分析し、表の圧縮率に関する情報を提供します。 |
|
特定の行に対する圧縮タイプを戻します。 |
34.5.1 GET_COMPRESSION_RATIOプロシージャ
このプロシージャは、表または索引の圧縮比を分析し、オブジェクトの圧縮率に関する情報を提供します。ユーザーは様々なパラメータを入力して、異なる圧縮タイプを選択的に分析できます。
構文
次のようにオブジェクト(表または索引。デフォルトは表)の圧縮率を取得します。
DBMS_COMPRESSION.GET_COMPRESSION_RATIO ( scratchtbsname IN VARCHAR2, ownname IN VARCHAR2, objname IN VARCHAR2, subobjname IN VARCHAR2, comptype IN NUMBER, blkcnt_cmp OUT PLS_INTEGER, blkcnt_uncmp OUT PLS_INTEGER, row_cmp OUT PLS_INTEGER, row_uncmp OUT PLS_INTEGER, cmp_ratio OUT NUMBER, comptype_str OUT VARCHAR2, subset_numrows IN NUMBER DEFAULT COMP_RATIO_MINROWS, objtype IN PLS_INTEGER DEFAULT OBJTYPE_TABLE);
次のように、LOBの圧縮率を取得します。
DBMS_COMPRESSION.GET_COMPRESSION_RATIO ( scratchtbsname IN VARCHAR2, tabowner IN VARCHAR2, tabname IN VARCHAR2, lobname IN VARCHAR2, partname IN VARCHAR2, comptype IN NUMBER, blkcnt_cmp OUT PLS_INTEGER, blkcnt_uncmp OUT PLS_INTEGER, lobcnt OUT PLS_INTEGER, cmp_ratio OUT NUMBER, comptype_str OUT VARCHAR2, subset_numrows IN number DEFAULT COMP_RATIO_LOB_MAXROWS);
表のすべての索引の圧縮率を取得します。圧縮率はコレクションとして戻されます。
DBMS_COMPRESSION.GET_COMPRESSION_RATIO ( scratchtbsname IN VARCHAR2, ownname IN VARCHAR2, tabname IN VARCHAR2, comptype IN NUMBER, index_cr OUT DBMS_COMPRESSION.COMPRECLIST, comptype_str OUT VARCHAR2, subset_numrows IN NUMBER DEFAULT COMP_RATIO_INDEX_MINROWS);
パラメータ
表34-4 GET_COMPRESSION_RATIOプロシージャのパラメータ
パラメータ | 説明 |
---|---|
|
分析に使用できる一時スクラッチ表領域。 |
|
分析する表のスキーマ。 |
|
分析する表の名前。 |
|
オブジェクト名 |
|
オブジェクトのパーティションまたはサブパーティションの名前。 |
|
分析を実行する対象の圧縮タイプ。 オブジェクトが索引の場合、有効な圧縮タイプは、 ノート: |
|
表の圧縮されたサンプルに使用されるブロック数。 |
|
表の圧縮解除されたサンプルに使用されるブロック数。 |
|
表の圧縮されたサンプルにあるブロック内の行数。 |
|
表の圧縮解除されたサンプルにあるブロック内の行数。 |
|
圧縮比、 |
|
圧縮タイプを説明する文字列。 |
|
圧縮比を見積もるためにサンプリングされた行数。 |
|
|
|
LOB列名 |
|
パーティション化された表の場合は、関連したパーティション名。 |
|
圧縮比を見積もるために実際にサンプリングされたLOBの数。 |
|
索引のリストおよび見積り済の圧縮率。 |
使用上のノート
プロシージャは、スクラッチ表領域に異なる表を作成し、これらのオブジェクトで分析を実行します。ユーザー指定の表では何も変更しません。
34.5.2 GET_COMPRESSION_TYPEファンクション
このファンクションは、特定の行に対する圧縮タイプを戻します。行が連鎖している場合は、ファンクションは先頭の圧縮タイプのみを戻し、先頭は異なる圧縮が可能であるため、中間や末尾は調べません。
構文
DBMS_COMPRESSION.GET_COMPRESSION_TYPE ( ownname IN VARCHAR2, tabname IN VARCHAR2, row_id IN ROWID, subobjname IN VARCHAR2 DEFAULT NULL)) RETURN NUMBER;
パラメータ
表34-5 GET_COMPRESSION_TYPEファンクションのパラメータ
パラメータ | 説明 |
---|---|
|
表のスキーマ名。 |
|
表の名前。 |
|
行のROWID。 |
|
表パーティションまたは表サブパーティションの名前。 |
戻り値
圧縮タイプを示すフラグ(表34-1を参照)。