ADMIN_GET_INDEX_COMPRESS_INFO 表関数 - 圧縮索引情報を戻す
ADMIN_GET_INDEX_COMPRESS_INFO 表関数は、非圧縮索引について索引圧縮により見込まれる削減量を戻します。
構文
スキーマは SYSPROC です。
表関数パラメーター
- objecttype
- オブジェクト・タイプを示す、タイプ VARCHAR(1) の入力引数。値は以下のいずれかでなければならず、大/小文字を区別します。
- 'T'、NULL、または空ストリング (表を示す場合)
- 'I' (索引の場合)
- objectschema
- オブジェクト・スキーマを指定する、タイプ VARCHAR (128) の大/小文字を区別する入力パラメーター。
objecttype が 'T'、NULL、または空ストリング (") である場合、objectschema は表スキーマを示します。
- objectschema が指定され、objectname が NULL または空ストリング (") の場合、指定されたスキーマのすべての表に関する情報が戻されます。
- objectschema と objectname の両方が指定される場合、指定された表のすべての索引に関する情報が戻されます。
objecttype が 'I' である場合、objectschema は索引スキーマを示します。- objectschema が指定され、objectname が NULL または空ストリング (") の場合、指定されたスキーマのすべての索引に関する情報が戻されます。
- objectschema と objectname の両方が指定される場合、指定された索引に関する情報が戻されます。
- objectschema と objectname のどちらも指定されない場合、すべてのスキーマのすべての索引に関する情報が戻されます。
objectname が指定され、objectschema が指定されない場合、関数が SQL エラー を戻します。 値が NULL または空ストリング (") である場合、パラメーター値は未指定であるといいます。
- objectname
- オブジェクト名を指定する、タイプ VARCHAR (128) の大/小文字を区別する入力パラメーター。 objectschema パラメーターの説明を参照してください。
- member
- データベース・メンバー番号を指定するタイプ INTEGER の入力パラメーター。 指定されている場合、指定されたデータベース・メンバーに存在する索引に関する情報のみが戻されます。すべてのアクティブ・データベース・メンバーに関してデータが戻されるように指定するには、member パラメーター値を -2 または NULL に設定します。 単一メンバー環境では、-2 または NULL を指定します。
- datapartitionid
- データ・パーティション ID を指定するタイプ INTEGER の入力パラメーター。指定されている場合、指定されたデータ・パーティションで定義された索引パーティションに関する情報のみが戻されます。 データ・パーティション ID は、SYSCAT.DATAPARTITIONS ビューにある DATAPARTITIONID に対応します。すべてのデータ・パーティションに関してデータが戻されるように指定するには、datapartitionid パラメーター値を -2 または NULL に設定します。 非パーティション索引の場合は、-2、0、または NULL を指定します。
許可
- ルーチンに対する EXECUTE 特権
- DATAACCESS 権限
- DBADM 権限
- SQLADM 権限
デフォルトの PUBLIC 特権
制限のないデータベースでは、この関数が自動的に作成されると、EXECUTE 特権が PUBLIC に付与されます。
使用上の注意
- 既存の索引についての圧縮による実際の削減量を取得したい場合、この関数は使用しないでください。その場合は代わりに (統計が最新でなければ) RUNSTATS コマンドを実行し、次のカタログ値のいずれかまたは両方を照会します。
- SYSCAT.INDEXES.PCTPAGESSAVED
- SYSCAT.INDEXPARTITIONS.PCTPAGESSAVED
例
データベースのマイグレーション後は、すべての既存の索引は圧縮解除されます。 データベース・パーティション番号 2 に置かれている、データ・パーティション ID が 3 の表「S.T1」について、既存の索引の索引圧縮による節約の可能性を見積もることもできます。この例では、S はスキーマ名、T1 は表名であり、T1 は圧縮されていません。
SELECT compress_attr, iid, dbpartitionnum, index_compressed,
pct_pages_saved, num_leaf_pages_saved
FROM TABLE(sysproc.admin_get_index_compress_info('', 'S', 'T1', 2, 3))
AS t以下は、このステートメントからの出力例です。
COMPRESS_ATTR IID DBPARTITIONNUM INDEX_COMPRESSED ...
------------- --------- -------------- ---------------- ...
N 1 2 N ...
N 2 2 N ...... PCT_PAGES_SAVED NUM_LEAF_PAGES_SAVED
... --------------- --------------------
... 50 200
... 45 150
圧縮による節約を行う価値があると判断し、索引圧縮を使用可能にしたいと考えます。
ALTER INDEX INDEX1 compress yes
ALTER INDEX INDEX2 compress yes
REORG INDEXES all FOR table S.T1時間の経過とともに、表の新規索引を作成する必要について判断し、圧縮する前に索引圧縮によってこれらの索引についてどれほど節約されるかを見積もることもできます。 さらに、すでに圧縮済みの索引から圧縮統計を参照することもできます。
SELECT compress_attr, iid, dbpartitionnum, index_compressed,
pct_pages_saved, num_leaf_pages_saved
FROM TABLE(sysproc.admin_get_index_compress_info('', 'S', 'T1', 2, 3))
AS t以下は、このステートメントからの出力例です。
COMPRESS_ATTR IID DBPARTITIONNUM INDEX_COMPRESSED ...
------------- --------- -------------- ---------------- ...
Y 1 2 Y ...
Y 2 2 Y ...
N 3 2 N ...
N 4 2 N ...... PCT_PAGES_SAVED NUM_LEAF_PAGES_SAVED
... --------------- --------------------
... -1 -1
... -1 -1
... 58 230
... 49 140index_compressed 列で示されているように、最初の 2 つの索引がすでに圧縮されているため、ステートメントはシステム・カタログから値が戻されます。 この場合、カタログからの値は収集されませんでした。
表に対して RUNSTATS を実行した後、索引関数を次回実行するときに、訂正された結果が生成されます。
RUNSTATS ON TABLE S.T1 FOR INDEXES ALL
SELECT compress_attr, iid, dbpartitionnum, index_compressed,
pct_pages_saved, num_leaf_pages_saved
FROM TABLE(sysproc.admin_get_index_compress_info('', 'S', 'T1', 2, 3))
AS t以下は、このステートメントからの出力例です。
COMPRESS_ATTR IID DBPARTITIONNUM INDEX_COMPRESSED ...
------------- --------- -------------- ---------------- ...
Y 1 2 Y ...
Y 2 2 Y ...
N 3 2 N ...
N 4 2 N ...... PCT_PAGES_SAVED NUM_LEAF_PAGES_SAVED
... --------------- --------------------
... 50 200
... 45 150
... 58 230
... 49 140
戻される情報
| 列名 | データ・タイプ | 説明 |
|---|---|---|
| INDSCHEMA | VARCHAR(128) | index_schema - 索引スキーマ・モニター・エレメント |
| INDNAME | VARCHAR(128) | index_name - 索引名モニター・エレメント |
| TABSCHEMA | VARCHAR(128) | table_schema - 表スキーマ名モニター・エレメント |
| TABNAME | VARCHAR(128) | table_name - 表名モニター・エレメント |
| DBPARTITIONNUM | SMALLINT | dbpartitionnum - データベース・パーティション番号モニター・エレメント |
| IID | SMALLINT | iid - 索引 ID モニター・エレメント |
| DATAPARTITIONID | INTEGER | データ・パーティション ID。 |
| COMPRESS_ATTR | CHAR(1) | 索引の COMPRESSION 属性の状態。
|
| INDEX_COMPRESSED | CHAR(1) | 物理索引形式。
|
| PCT_PAGES_SAVED | SMALLINT | 索引が物理的に圧縮されていない (INDEX_COMPRESSED が N である) 場合、この値は、索引が実際に圧縮されているかのように、節約されるリーフ・ページの見積パーセントを表します。
索引が物理的に圧縮されている (INDEX_COMPRESSED が Y である) 場合、この値は、システム・カタログ・ビュー (SYSCAT.INDEXES または SYSCAT.INDEXPARTITIONS のいずれか) からの PCTPAGESSAVED 値をレポートします。
注: この値は、パーティション・データベース環境のデータベース・パーティションごとの索引または索引パーティションの各項目で同じになります。
この関数を実行したときに表または索引でエラーが発生した場合、この値は NULL です。
|
| NUM_LEAF_PAGES_SAVED | BIGINT | 索引が物理的に圧縮されていない (INDEX_COMPRESSED が N である) 場合、この値は、索引が実際に圧縮されているかのように、節約されるリーフ・ページ数の見積もりを表します。
索引が物理的に圧縮されている (INDEX_COMPRESSED が Y である) 場合、この値は、システム・カタログ・ビュー (SYSCAT.INDEXES または SYSCAT.INDEXPARTITIONS のいずれか) から PCTPAGESSAVED および NLEAF 値に基づいて、節約される計算済みリーフ・ページ数をレポートします。
PCTPAGESSAVED または NLEAF のいずれかが無効値 (-1) である場合、この値も -1 に設定されます。 注: この値は、パーティション・データベース環境のデータベース・パーティションごとの索引または索引パーティションの各項目で同じになります。
この関数を実行したときに表または索引でエラーが発生した場合、この値は NULL です。
|
