root-file-spec
オプティマイザ統計を表示するデータベースを指定します。デフォルトのファイル・タイプは.rdbです。
Full
Nofull
この修飾子を使用できるのは、表、索引または索引接頭辞のカーディナリティ統計を表示する場合のみです。この修飾子を指定すると、次のカーディナリティ情報が表示されます。
- 実際のカーディナリティ
現在の表、索引または索引接頭辞のカーディナリティ値を表示します。- 格納済カーディナリティ
システム・リレーションに格納されている表、索引または索引接頭辞のカーディナリティ値を表示します。- 格納済カーディナリティ値と実際のカーディナリティ値の差
格納済カーディナリティが実際のカーディナリティよりも少ない場合、この値は負の数になります。- カーディナリティの実際値との差(パーセント)
この値は、格納済カーディナリティ値と実際のカーディナリティ値の差を実際のカーディナリティ値で割って計算します。格納済カーディナリティが実際のカーディナリティより少ない場合、値は負の数になります。
デフォルト値はNofullです。
Indexes
Indexes[=(index-list)]
Noindex
統計を表示する索引(1つまたは複数)を指定します。index-listを指定しないと、Tables修飾子に指定した表に定義されているすべての索引の統計が表示されます。index-listを指定すると、指定した索引の統計のみが表示されます。Noindex修飾子を指定すると、索引の統計は表示されません。デフォルトは、index-listのないIndexes修飾子です。
Log
Log=file-name
Nolog
統計の表示を記録するかどうかを指定します。Log修飾子を指定すると、情報がSYS$OUTPUTに出力されます。Log=file-spec修飾子を指定すると、情報がファイルに書き込まれます。Nolog修飾子は有効な構文ですが、Oracle RMUによって無視されます。デフォルトはLog修飾子です。Statistics[=(options)]
Tables、System_RelationsおよびIndexes修飾子に指定した項目に関して、表示する統計のタイプを指定します。オプション・リストなしでStatistics修飾子を指定すると、指定した項目のすべての統計が表示されます。Statistics修飾子にオプション・リストを指定すると、次のリストで説明する統計のタイプがOracle RMUによって表示されます。複数のオプションを指定する場合は、オプションをカンマで区切りカッコで囲みます。
Statistics修飾子のオプションを次に示します。
- Cardinality
TablesおよびSystem_Relations修飾子に指定した表の表のカーディナリティと、Indexes修飾子に指定した索引の索引および索引接頭辞のカーディナリティを表示します。- Workload
TablesおよびSystem_Relations修飾子に指定した表のColumn Group(列グループ)、Duplicity Factor(永続性ファクタ)およびNull Factor(Nullファクタ)の作業負荷統計を表示します。- Storage
次の統計を表示します。
- Tables修飾子に指定した表のTable Row Clustering Factor(表の行のクラスタ化係数)
- Indexes修飾子に指定した索引のIndex Key Clustering Factor(索引キーのクラスタ化係数)、Index Data Clustering Factor(索引データのクラスタ化係数)およびAverage Index Depth(索引の平均深さ)
System_Relations
Nosystem_Relations
System_Relations修飾子を使用して、システム表(リレーション)とそれに関連する索引のオプティマイザ統計を表示することを指定します。System_Relations修飾子を指定しない場合、またはNosystem_Relations修飾子を指定した場合は、システム表または関連する索引のオプティマイザ統計は表示されません。
システム表に定義されている索引の統計を表示しない場合は、Noindex修飾子を指定します。
デフォルトはNosystem_Relations修飾子です。
Tables
Tables=(table-list)
Notables
オプティマイザ統計を表示する表(1つまたは複数)を指定します。table-listを指定すると、それらの表と関連付けられている索引のオプティマイザ統計が表示されます。Tables修飾子を指定しない場合、またはTables修飾子を指定してtable-listを指定しない場合、データベース内のすべての表と、その表に関連付けられている索引のオプティマイザ統計が表示されます。
Notables修飾子を指定すると、表のオプティマイザ統計は表示されません。
指定した表に定義されている索引の統計を表示しない場合は、Noindex修飾子を指定します。
Tables修飾子がデフォルトです。
Threshold=options
Nothreshold
Threshold修飾子を使用できるのは、Full修飾子と組み合せる場合のみです。この修飾子を使用すると、Threshold列も表示に追加されます。Threshold修飾子には次のオプションを指定できます。
- Percent=n
Percent=nの値には0〜99の整数を指定できます。nのデフォルト値は0です。Percent=nを指定しない場合、またはパーセントの値として0を指定した場合、実際のカーディナリティ値との差(パーセント)の出力列には「*over*」というフラグが付きます。パーセントの値として1〜99を指定した場合、指定したパーセント値よりも実際のカーディナリティ値との差(パーセント)が大きいときに、出力列に「*over*」というフラグが付きます。レポートでは、Threshold列に、指定した値(パーセント)を超える差のカーディナリティ値が表示されます。しきい値を超過しない場合、この列は空になります。しきい値を超過すると、この列に文字列「*over*」が表示されます。- Log={All|Over_Threshold}
Logを指定しない場合、またはLog=Allを指定する場合、すべてのカーディナリティ値が表示されます。Log=Over_Thresholdを指定すると、しきい値(パーセント)を超過したカーディナリティ値のみ、出力列に「*over*」というフラグが付きます。
- データベースに対してRMU Show Optimizer_Statisticsコマンドを使用するには、そのデータベースのルート・ファイルのアクセス制御リスト(ACL)にRMU$ANALYZEまたはRMU$SHOW権限が必要です。あるいは、OpenVMS SYSPRVまたはBYPASS権限が必要です。
- カーディナリティ統計は、Oracle Rdbによって自動的に保持されます。物理ストレージと作業負荷の統計が収集されるのは、RMU Collect Optimizer_Statisticsコマンドを発行した場合のみです。特定の問合せに対する物理記憶域と作業負荷の統計情報を得るには、RDMS$DEBUG_FLAGS論理名を"O"と定義します。次に例を示します。
$ DEFINE RDMS$DEBUG_FLAGS "O"
問合せを実行するときに、作業負荷と物理ストレージの統計が問合せの最適化で使用された場合、コマンド出力に次のような行が表示されます。
~O: Workload and Physical statistics used
- 索引接頭辞のカーディナリティ・ドリフトを識別するには、Statistics=Cardinality/Full/Threshold=n修飾子を付けてRMU Show Optimizer Statisticsコマンドを使用します。このコマンドによって、修復する必要がある索引が識別されます。格納済の索引接頭辞のカーディナリティ値を修復するには、RMU Collect Optimizer_Statisticsコマンドを使用します。
例1次のコマンドは、EMPLOYEES表について前に収集されたすべてのオプティマイザ統計を表示します。オプティマイザ統計を収集する方法の例は、第1.15節を参照してください。
$ RMU/SHOW OPTIMIZER_STATISTICS MF_PERSONNEL.RDB /TABLE=(EMPLOYEES) ------------------------------------------------------------------- Optimizer Statistics for table : EMPLOYEES Cardinality : 100 Row clustering factor : 0.5100000 Workload Column group : EMPLOYEE_ID Duplicity factor : 1.0000000 Null factor : 0.0000000 First created time : 3-JUL-1996 10:37:36.43 Last collected time : 3-JUL-1996 10:46:10.73 Workload Column group : LAST_NAME, FIRST_NAME, MIDDLE_INITIAL, ADDRESS_DATA_1, ADDRESS_DATA_2, CITY, STATE, POSTAL_CODE, SEX, BIRTHDAY, STATUS_CODE Duplicity factor : 1.5625000 Null factor : 0.3600000 First created time : 3-JUL-1996 10:37:36.43 Last collected time : 3-JUL-1996 10:46:10.74 Index name : EMP_LAST_NAME Index Cardinality : 83 Average Depth : 2.0000000 Key clustering factor : 0.0481928 Data clustering factor : 1.1686747 Segment Column Prefix cardinality LAST_NAME 0 Index name : EMP_EMPLOYEE_ID Index Cardinality : 0 Average Depth : 2.0000000 Key clustering factor : 0.0100000 Data clustering factor : 0.9500000 Segment Column Prefix cardinality EMPLOYEE_ID 0 Index name : EMPLOYEES_HASH Index Cardinality : 0 Key clustering factor : 1.0000000 Data clustering factor : 1.0000000
例2
次のコマンドは、データベースに定義されているすべての表のオプティマイザ統計を表示します。Noindex修飾子を指定すると、索引統計は表示されません。Log修飾子にファイル指定を指定すると、オプティマイザ統計の値が指定したファイルに書き込まれます。
$ RMU/SHOW OPTIMIZER_STATISTICS mf_personnel.rdb - _$ /NOINDEX/LOG=NOINDEX-STAT.LOG
例3
次の例は、FullおよびThreshold修飾子をCardinalityオプションと一緒に使用したときのコマンドの出力を示します。この例の表XXXには3つの索引があります。索引XXX_IDX_FULLでは、索引接頭辞のカーディナリティ収集が完全に有効になっています。レポートには、この索引のカーディナリティ・ドリフトは表示されません。索引XXX_IDX_APPROXでは、索引接頭辞のカーディナリティ収集が有効になっており、カーディナリティ・ドリフトが明らかです。索引の最初のセグメント(列C1)の格納済カーディナリティは実際のカーディナリティよりも20%低くなっています。このコマンドではしきい値5%が指定されるため、この行のThresh列には「*over*」と表示されます。索引の第2セグメント(列C2)、索引接頭辞(C1、C2)にもカーディナリティ・ドリフトがあります。第3の索引XXX_IDX_NONEでは、索引接頭辞のカーディナリティ収集は無効になっています。これは、索引セグメントの表示ではなくレポートで示されます。レポートが長くなる場合は、レポートをディスク・ファイルに書込み、文字列「*over*」を使用して問題の索引を検索することができます。
$ RMU/SHOW OPTIMIZER/STAT=CARD/FULL/THRESH=(percent=5,log=all) sample.rdb Optimizer Statistics for table : XXX (Cardinality: Diff=Stored-Actual, Percent=Diff/Actual, Thresh=Percent exceeded) Table cardinality Actual Stored Diff Percent Thresh 109586 109586 0 0 % Index name : XXX_IDX_FULL (Cardinality: Diff=Stored-Actual, Percent=Diff/Actual, Thresh=Percent exceeded) Index cardinality Actual Stored Diff Percent Thresh 109586 109586 0 0 % Prefix cardinality Actual Stored Diff Percent Thresh Segment Column : C1 1425 1425 0 0 % Segment Column : C2 31797 31797 0 0 % Segment Column : C3 0 0 0 0 % Index name : XXX_IDX_APPROX (Cardinality: Diff=Stored-Actual, Percent=Diff/Actual, Thresh=Percent exceeded) Index cardinality Actual Stored Diff Percent Thresh 109586 109586 0 0 % Prefix cardinality Actual Stored Diff Percent Thresh Segment Column : C1 1425 1140 -285 -20 % *over* Segment Column : C2 31797 30526 -1271 -4 % Segment Column : C3 0 0 0 0 % Index name : XXX_IDX_NONE (Cardinality: Diff=Stored-Actual, Percent=Diff/Actual, Thresh=Percent exceeded) Index cardinality Actual Stored Diff Percent Thresh 109586 109586 0 0 % ***Prefix cardinality collection is disabled***