Question & Answer
Question
通常表に対する再編成を実行後に REORGCHK コマンドの出力にアスタリスク (*) が残る原因を教えてください
Answer
各公式について原因を解説します。
※ 公式に利用されている項目の意味については、REORGCHK コマンドをご参照ください。
F1:
F2:
F3:
F4:
F5:
F6:
F7:
F8:
参考情報
REORGCHK コマンド
関連情報
※ 公式に利用されている項目の意味については、REORGCHK コマンドをご参照ください。
F1:
- <公式>
100*OVERFLOW/CARD < 5
<説明>
表のオーバーフロー行の合計数は、行の合計数の 5% 以下でなければなりません。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
・REORG INDEX/INDEXES ALL のみ実行している場合。
F2:
- <公式> (通常の表の場合)
100*TSIZE / ((100-PCTFREE)/100 * (FPAGES-NPARTITIONS) * (TABLEPAGESIZE-68)) > 70
<説明>
バイト単位の表のサイズ (TSIZE) は、表に割り当てられた合計スペースの 70% を超えていなければなりません 。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
・REORG INDEX/INDEXES ALL のみ実行している場合。
・表スペースのページ・サイズ、PCTFREE、レコード・サイズの兼ね合いにより、ページが疎な状態になる場合。
(例えば、ページ・サイズ 4KB、レコード・サイズ 2KB 強 の場合、1 ページに 1 レコードしか入らず半分近くがフリー・スペースとなるため、常に F2 が * になるといったケース)
クラスター索引が設定されている表を再編成すると、フリー・スペース (PCTFREE) が確保されますが、公式 F2 では PCTFREE で指定した割合を超えるフリー・スペースについて検査するため、PCTFREE が 30% を超えて設定されている場合であったとしても、F2 に * が付くことはありません。
F3:
- <公式>
100*NPAGES/FPAGES > 80
<説明>
まったく行を含まないページ数は、ページ合計数の 20% より少ない値にします。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
・REORG INDEX/INDEXES ALL のみ実行している場合。
F4:
- <公式> (単一データベース・パーティションの場合)
CLUSTERRATIO or normalized CLUSTERFACTOR > 80
<説明>
クラスタリング索引比率は、80% より大きくします。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
・クラスター索引の存在しない表に対して、INDEXを指定せずに REORG TABLE を実行した場合。
・複数の索引が存在する場合。
複数の索引が 1 つの表に定義される場合は、これらの索引のいくつかは 低いクラスター比率を持つことを避けられません。
ある表にクラスター索引が存在するかどうかは、次の SQL で確認できます。
db2 "select tabschema,tabname,indschema,indname,indextype from syscat.indexes where indextype='CLUS' and tabname='tablename'"
F5:
- <公式> (単一データベース・パーティションの場合)
100*(KEYS*(LEAF_RECSIZE+LEAF_RECSIZE_OVERHEAD)+(INDCARD-KEYS)*DUPKEYSIZE)
/ ((LEAF-NUM_EMPTY_LEAFS-1)* (INDEXPAGESIZE-LEAF_PAGE_OVERHEAD))
> MIN(50,(100-PCTFREE))
<説明>
索引のリーフ・レベルで使用されるスペースは、50 パーセントと 100-PCTFREE パーセントのうち小さい方より大きくなければなりません (これは LEAF>1 のときのみ検査されます)。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
F6:
- <公式>
((100-PCTFREE ) * ((FLOOR((100 - LEVEL2PCTFREE) / 100 *
(INDEXPAGESIZE - NLEAF_PAGE_OVERHEAD)/(NLEAF_RECSIZE + NLEAF_RECSIZE_OVERHEAD)))*
(FLOOR((100 - MIN(10, LEVEL2PCTFREE))/100*(INDEXPAGESIZE - NLEAF_PAGE_OVERHEAD)/
(NLEAF_RECSIZE + NLEAF_RECSIZE_OVERHEAD)) ** (NLEVELS - 3)) *
(INDEXPAGESIZE - LEAF_PAGE_OVERHEAD))/(KEYS*(LEAF_RECSIZE+LEAF_RECSIZE_OVERHEAD)+
(INDCARD - KEYS) * DUPKEYSIZE ) ) < 100
<説明>
索引の再作成がツリーのレベル数を減少させるかどうかを判別するために、 この公式は現行のツリーよりも 1 つ低いレベルの索引ツリー内にあるスペースの量と必要なスペースの量との比率を検査します。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
・索引に可変長カラムがあり、平均長よりはるかに長い索引エントリーが大量にある場合。
この場合は、 F6 の計算結果より多くのページを必要とする可能性があります。
F7:
- <公式>
100 * (NUMRIDS_DELETED / (NUMRIDS_DELETED + INDCARD)) < 20
<説明>
疑似空白ではないページ上の疑似削除された RID の数は 20% 未満でなければなりません。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
F8:
- <公式>
100 * (NUM_EMPTY_LEAFS/LEAF) < 20
<説明>
疑似空白リーフ・ページの数は、リーフ・ページの合計数の 20% 未満でなければなりません。
<* が消えないケース>
・REORG 実行後に、RUNSTATS を実行していないにもかかわらず、CURRENT STATISTICS オプションを指定して REORGCHK を実行している場合。
参考情報
REORGCHK コマンド
関連情報
[{"Type":"MASTER","Line of Business":{"code":"LOB10","label":"Data and AI"},"Business Unit":{"code":"BU058","label":"IBM Infrastructure w\/TPS"},"Product":{"code":"SSEPGG","label":"Db2 for Linux, UNIX and Windows"},"ARM Category":[{"code":"a8m500000008PlMAAU","label":"Data Movement-\u003EReorg"}],"ARM Case Number":"","Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"All Versions"}]
Was this topic helpful?
Document Information
Modified date:
31 August 2023
UID
swg21698168