オプティマイザ統計情報の収集は、Oracle Rdbオプティマイザで問合せを最適化する際のソリューション・コストおよびカーディナリティの決定に使用する統計情報を最新にするためです。
カーディナリティと記憶域の統計情報は、RMU Collect Optimizer_Statisticsコマンドを発行して収集できます。Tables、System_RelationsまたはIndexes修飾子を使用して特定の表または索引に関するこれらの統計情報を収集するようOracle RMUに指定できます。
作業負荷統計情報を収集するには、まずSQLで作業負荷プロファイルを生成する必要があります。次のリストに、作業負荷プロファイルの生成および作業負荷統計情報の収集の一般的な手順を示します。
- SQL ALTER DATABASEまたはSQL CREATE DATABASE文でWORKLOAD COLLECTION IS ENABLED句を指定して作業負荷プロファイルを有効にします。
SQLでRDB$WORKLOADという名前のシステム表が新たに作成されます。- Oracle Rdbオプティマイザで最良の統計を得られる問合せを実行します。
問合せを実行すると、問合せの最適化処理に重要な列のグループがオプティマイザで決定されます。この列のグループは、作業負荷列グループと呼ばれます。作業負荷列グループには、実際は列が1つのみ含まれることに注意してください。
作業負荷列グループの各セットが、RDB$WORKLOADシステム表に行として挿入されます。
この時点では、RDB$WORKLOADシステム表のデータは、作業負荷列グループ、列グループが関連付けられている表と、これらが表に挿入された日付のみです。統計情報は、RDB$WORKLOADシステム表に記録されていません。- ここで、大抵の場合、SQL ALTER DATABASE WORKLOAD COLLECTION IS DISABLED句を使用して作業負荷プロファイルを無効にします。
作業負荷プロファイルを無効にした後実行された問合せは、Oracle Rdbオプティマイザで作業負荷列グループ用にスキャンされません。同じ問合せが常に実行される場合、作業負荷列グループを有効のままにすることもできます。この場合、RDB$WORKLOADシステム表に新たな行は挿入されません。ただし、作業負荷プロファイルを有効にしたくない問合せの実行が予想される場合、作業負荷の収集を無効にする必要があります。- Statistics=(Workload)修飾子を指定してRMU Collect Optimizer_Statisticsコマンドを実行します。
Oracle RMUでRDB$WORKLOADシステム表が読み取られ、統計情報を収集する列グループが決定されて、統計情報が収集されます。- 前述でプロファイルした問合せを再度実行します。
Oracle RMUで収集された統計情報がオプティマイザで使用され、最大の効果が得られるようプロファイルした問合せが最適化されます。
次のリストに、RMU Collect Optimizer_Statisticsコマンドを発行するタイミングおよび使用するStatistics修飾子のオプションについてのガイドラインを示します。
- 複雑で頻繁に使用される新規問合せを通常作業の一環として導入する場合、作業負荷プロファイルを有効にし、Statistics=(Workload)修飾子を指定してRMU Collect Optimizer_Statisticsコマンドを実行します。
- 新規の表または索引などのメタデータをデータベースに追加した後、Statistics=(Storage)修飾子を指定してRMU Collect Optimizer_Statisticsコマンドを実行します。この場合、作業負荷プロファイルを再度有効にする必要はありません。
- データベースのデータが著しく増えた、減った、あるいは変更された場合、Statistics=(Storage, Workload)修飾子を指定してRMU Collect Optimizer_Statisticsコマンドを実行します。この場合、作業負荷プロファイルを再度有効にする必要はありません。
表1-6に、RMU Collect Optimizer_Statisticsコマンドで収集できる統計情報と、これらの統計情報のオプティマイザでの使用方法の説明をまとめます。
表1-6 RMU Collect Optimizer_Statisticsコマンドで収集される統計情報 カーディナリティ統計 収集される統計 定義 オプティマイザでの使用方法 表カーディナリティ 表内の行の数。 ソリューション・カーディナリティの決定。 索引カーディナリティ 索引内の異なるキー値の数。 返される索引キーの数の見積り。 索引接頭辞カーディナリティ 複数セグメントに分かれたBツリー索引で、先行する部分にある異なるキー値の数。 ソート索引範囲を基に返される索引キーの数の見積り。 作業負荷統計 収集される統計 定義 オプティマイザでの使用方法 列グループ重複係数 列グループ内の値ごとの重複の平均数。これは、概算値である。 等価選択(IS NULL条件を使用した選択または等価(=)演算子を使用した条件の選択)、等価結合、グループ集計(SQL GROUP BY句など)または射影演算(SQL DISTINCT句など)の方法の決定。 列グループNULL係数 列グループのうち、最低1つの列にNULL値を持つ表の行の数。これは、概算値である。 等価結合および等価選択でのNULLデータの影響(NULL値を持つ行が除外される可能性があるため)の評価。外部結合の結果のカーディナリティの評価にも使用される。 記憶域統計 収集される統計 定義 オプティマイザでの使用方法 索引の平均の深さ
(ソート索引のみ)Bツリーを何レベル下りるかの平均。 Bツリーの降下のコストの評価。(ソート索引によってアクセスされる内部表を使用するクロス結合で、Bツリーの降下が繰り返し行われる。) 索引キー・クラスタ化係数 ハッシュ・キー参照またはBツリー降下を除くBツリー索引のスキャン中、1つの索引キーと関連付けられているすべてのdbkeyの読取りに必要なI/Oの平均数。 ハッシュ索引およびソート索引に対する索引のみの検索のコスト評価の改善。 索引データ・クラスタ化係数 索引キーに関連付けられているdbkeyを使用したデータ行のフェッチに必要なI/Oの平均数。 ソート索引またはハッシュ・バケットからのデータ行のフェッチに対するコストの評価。 表の行クラスタ化係数 表の順次スキャンで、1行の読取りに必要なI/Oの平均数。 表の順次スキャンのコストの評価。
root-file-spec
統計情報を収集するデータベースを指定します。デフォルトのファイル・タイプは.rdbです。
Exclude_Tables
Exclude_Tables=(table-list)
統計情報の収集と、Rdb問合せオプティマイザによって使用される統計情報に対する更新から除外するデータベース表のリストを指定します。少なくとも1つのリストを指定する必要があります。表のリストのかわりに、オプション・ファイルを指定できます。1つのRMU Collect OptimizerコマンドでExclude_Tables修飾子とTables修飾子が使用された場合、Exclude_Tables修飾子が優先されます。両方の修飾子に同じ表が指定された場合、その表は、統計情報の収集および更新から除外されます。
Indexes
Indexes=(index-list)
Noindex
統計情報を収集する索引を指定します。index-listを指定しない場合、Tables修飾子で指定された表に定義されたすべての索引の統計情報が収集されます。index-listを指定した場合、指定した索引の統計情報のみが収集されます。Noindex修飾子を指定した場合、索引カーディナリティ、索引の平均の深さ、索引キー・クラスタ化係数および索引データ・クラスタ化係数に関する統計情報は収集されません。表の統計情報を収集しない場合は、Notable修飾子を指定します。(table-listを指定しないTables修飾子がデフォルトであることに注意してください。)
デフォルトは、index-listを指定しないIndexes修飾子です。
Log
Log=file-name
Nolog
統計用に計算された値の記録方法を指定します。SYS$OUTPUTに情報を出力する場合は、Log修飾子を指定します。情報をファイルに出力する場合は、Log=file-spec修飾子を指定します。情報を出力しない場合は、Nolog修飾子を指定します。どの種のLog修飾子も指定しない場合、デフォルトはDCL検証スイッチの現在の設定です。(DCL SET VERIFYコマンドでDCL検証スイッチを制御します。)Row_Count=n
作業負荷統計情報を収集する際、1つのI/Oリクエストで送られる行の数を指定します。データベースと環境にとって最良のパフォーマンスとメモリー使用状況を得られるnの値は、テストをして見つけます。nの値を増やすと、パフォーマンスは改善しますが、メモリーとオーバーヘッドが増えます。
nに指定できる最小値は1です。nのデフォルト値は100です。
Statistics[=(options)]
Tables、System_RelationsおよびIndexes修飾子で指定した事項に関して収集する統計情報のタイプを指定します。optionsリストを指定せずにStatistics修飾子を指定した場合、指定した事項に関するすべての統計情報が収集されます。optionsリストを指定してStatistics修飾子を指定した場合、次に説明するタイプの統計情報がOracle RMUで収集されます。複数のオプションを指定する場合、オプション間をカンマで区切り、オプション全体をカッコで囲みます。
Statistics修飾子のオプションは次のとおりです。
- Cardinality
TablesおよびSystem_Relations修飾子で指定した表カーディナリティと、Indexes修飾子で指定した索引の索引カーディナリティおよび索引接頭辞カーディナリティが収集されます。カーディナリティはOracle Rdbで自動的に保持されるため、カーディナリティの更新を明示的に無効にしている場合以外、通常、RMU Collect Optimizer_Statisticsコマンドを使用してカーディナリティ統計情報を収集する必要はありません。- Workload
TablesおよびSystem_Relations修飾子で指定した表の列グループの重複係数およびNULL係数の作業負荷統計情報が収集されます。- Storage
次の統計情報が収集されます。
- Tables修飾子で指定した表の行クラスタ化係数
- Indexes修飾子で指定した索引の索引キー・クラスタ化係数、索引データ・クラスタ化係数および索引の平均の深さ
これらの統計情報の格納にシステム・リレーションで使用される列および表の詳細は、表1-7を参照してください。
System_Relations
Nosystem_Relations
システム表(リレーション)とこれに関連付けられている索引に関するオプティマイザ統計情報を収集するよう指定します。System_Relations修飾子を指定しない場合、またはNosystem_Relations修飾子を指定した場合、システム表とこれに関連付けられている索引に関するオプティマイザ統計情報は収集されません。
システム表に定義されている索引に関する統計情報を収集しない場合は、Noindex修飾子を指定します。
デフォルトはNosystem_Relations修飾子です。
Tables
Tables[=(table-list)]
Notables
統計情報を収集する表を指定します。table-listを指定した場合、表とこれに関連付けられている索引に関する統計情報が収集されます。table-listを指定しない場合、すべての表とデータベース内の関連付けられているすべての索引に関する統計情報が収集されます。Table修飾子を指定しない場合、すべての表に関する統計情報が収集されます。Notables修飾子を指定した場合、表カーディナリティ、表の行クラスタ化係数、列グループ重複係数および列グループNULL係数に関する統計情報が収集されます。索引の統計情報を収集しない場合は、Noindex修飾子を指定します。
table-listを指定しないTables修飾子がデフォルトです。
Transaction_Type=option
統計情報の収集に使用されるトランザクションのモードを指定できます。有効なオプションは次のとおりです。
- Automatic
- Read_Only
- Noread_Only
この修飾子を使用する場合、オプションを指定する必要があります。
この修飾子のどの形式も使用しない場合、Transaction_Type=Automatic修飾子がデフォルトです。この修飾子は、統計情報の収集に使用されるトランザクション・モードをOracle RMUで決定するよう指定します。データベース内の記憶領域(統計情報の収集でアクセスされないものも含む)でスナップショットが無効の場合、データの収集に使用されるトランザクションは、読取り/書込みモードに設定されます。そうでない場合は、データを収集するトランザクションは読取り専用モードに設定されます。
Transaction_Type=Read_Only修飾子は、統計情報の収集に使用されるトランザクションを読取り専用モードに設定するよう指定します。トランザクション・タイプを明示的に読取り専用に指定する場合、データベース内のすべての記憶領域でスナップショットが有効である必要はありませんが、統計情報が収集される記憶領域では有効である必要があります。そうでない場合、エラーが返され、オプティマイザ統計情報の収集操作は失敗します。
すべての記憶領域でスナップショットが有効になっておらず、スナップショットが有効な記憶領域でのみ統計情報を収集する場合、このオプションを選択します。この場合、Transaction_Type=Read_Only修飾子を使用することによって、統計情報が収集され、データベースの他のユーザーに対しては最小限のロックが課されます。
Transaction_Type=Noread_Only修飾子は、統計情報の収集に使用されるトランザクションを読取り/書込みモードに設定するよう指定します。読取り専用トランザクションで起こるスナップショット・ファイルの増大化を避け、読取り/書込みトランザクションで起こるロックの増加というコストを甘受できる場合、このオプションを選択します。
- データベースに対してRMU Collect Optimizer_Statisticsコマンドを使用するには、データベースのルート・ファイル・アクセス制御リスト(ACL)にRMU$ANALYZE権限を持っているか、OpenVMSのSYSPRVまたはBYPASS権限を持っている必要があります。
- SQL ALTER DATABASE文を使用して、データベースのRDB$SYSTEM記憶領域を読取り専用アクセスに設定すると、RDB$SYSTEM記憶領域のOracle Rdbシステム表も読取り専用アクセスに設定されます。Oracle Rdbシステム表が読取り専用アクセスに設定されると、次のようになります。
- 表および索引のカーディナリティに対する自動更新が無効になります。
- カーディナリティに対する手動変更は、オプティマイザに影響を及ぼしません。
- カーディナリティの更新に関連するI/Oは除外されます。
- 索引の場合、カーディナリティ値は、重複が許可されている索引に対する一意のエントリの数です。索引が一意の場合、Oracle Rdbでカーディナリティに0が格納され、かわりに表のカーディナリティが使用されます。表の場合、カーディナリティ値は、表内の行の数です。Oracle Rdbでは、索引および表のカーディナリティ値がオプティマイザの判断に影響します。表および索引の実際のカーディナリティ値が、格納されているカーディナリティ値と異なる場合、オプティマイザのパフォーマンスに悪影響を及ぼします。
- Oracle RMUで収集操作を行う場合、処理に必要な最大メモリーが表示されます。必要な量が使用できない場合、利用可能なメモリーを使用するようOracle RMUで調整されます。ただし、この調整後もメモリーが不十分な場合、収集操作で、問題が起きる可能性のある表の更新を省略して処理が続けられます。省略された表は、「Unable to allocate memory for <table-name>; default statistics values used.」というメッセージとともにログ・ファイルに記録されます。
この問題を回避するには、OpenVMS System Generation Utility(SYSGEN)ユーティリティを使用して、VIRTUALPAGECNTパラメータを増やします。- オプティマイザ統計情報のすべてを一度に更新しない場合、処理を別々のコマンドに分けます。カーディナリティおよび記憶域の統計情報を1つのRMU Collect Optimizer_Statisticsで収集し、作業負荷統計情報を2つ目のコマンドで収集することをお薦めします。
- 作業負荷プロファイルの有効化および保持によって得られるパフォーマンスの改善が、コストに見合うかどうかを評価する必要があります。一般的には、定期的に実行される問合せに変更がない場合は、この表を保持するコストに見合います。しかし、問合せの大半が非定型で、問合せごとに異なるアクセス方法が使用される場合、この表を保持するコストに見合いません。
たとえば、EMPLOYEES表にアクセスする問合せの大半でEMPLOYEE_IDを選択条件に使用し、問合せで同じアクセス方法が使用される場合、EMPLOYEES表の作業負荷プロファイルを保持する価値があります。しかし、EMPLOYEES表へのアクセスに、EMPLOYEE_IDを使用する問合せも、LAST_NAMEを使用する問合せも、STATEを使用する問合せもあって予測が立たず、アクセス方法も異なる場合、作業負荷プロファイルを保持する必要はありません。- 索引接頭辞カーディナリティは累積的な値です。たとえば、索引に3つのセグメントがあり、最初のセグメントのカーディナリティはA、2番目のカーディナリティはB、3番目のカーディナリティはCとします。この場合、最初のセグメントの索引接頭辞カーディナリティはA、2番目のセグメントの索引接頭辞カーディナリティはAとBの連結(A|B)、3番目の索引接頭辞カーディナリティはAとBとCの連結(A|B|C)です。したがって、索引の最後のセグメントの接頭辞カーディナリティは、索引全体のカーディナリティと常に同じです。同様に、索引のセグメントが1つのみの場合、索引接頭辞カーディナリティは、索引全体のカーディナリティと同じです。このような場合、索引接頭辞カーディナリティが索引全体のカーディナリティと同じのため、索引接頭辞カーディナリティはOracle RMUで計算されません。かわりに、Oracle RMUで索引接頭辞カーディナリティとして値0が格納され、オプティマイザで索引全体のカーディナリティとして格納された値が使用されます。
- カーディナリティ統計は、Oracle Rdbによって自動的に保持されます。物理ストレージと作業負荷の統計情報は、RMU Collect Optimizer_Statisticsコマンドを発行した場合にのみ収集されます。特定の問合せに対する物理ストレージと作業負荷の統計情報を得るには、RDMS$DEBUG_FLAGS論理名に"O"を定義します。次に例を示します。
$ DEFINE RDMS$DEBUG_FLAGS "O"
問合せを実行する際、作業負荷および物理統計が問合せの最適化に使用された場合、コマンド出力に次のような行が表示されます。
~O: Workload and Physical statistics used
- このコマンドの最高のパフォーマンスを得るには、検出済非同期プリフェッチが有効である必要があります。Oracle Rdbリリース7.0以降、検出済非同期プリフェッチは、Oracle Rdbリリース7.0で作成されたデータベースまたはリリース7.0に変換されたデータベースでは、デフォルトで有効です。Header修飾子を指定してRMU Dumpコマンドを発行すると、データベースの設定が確認できます。
検出済非同期プリフェッチが無効で、これをデータベースに対して有効にしない場合、次の論理名をプロセス・レベルで定義することで、Oracle RMU処理用にプリフェッチを有効にできます。
$ DEFINE RDM$BIND_DAPF_ENABLED 1 $ DEFINE RDM$BIND_DAPF_DEPTH_BUF_CNT P1
P1は、ユーザー・バッファ・カウントの10パーセントと20パーセントの間の値です。- 作業負荷プロファイルのエントリは、RMU Delete Optimizer_Statisticsコマンドで削除できます。詳細は、第1.18節を参照してください。
- 作業負荷プロファイルのエントリは、RMU Show Optimizer_Statisticsコマンドで表示できます。詳細は、第1.62.6項を参照してください。
- 表1-7に、RMU Collect Optimizer_Statisticsコマンドで収集される統計情報が格納されるシステム表のサマリーを示します。
表1-7 オプティマイザ統計情報の格納に使用されるシステム表 統計 システム表名 列名 表カーディナリティ RDB$RELATIONS RDB$CARDINALITY 表の行クラスタ化係数 RDB$RELATIONS RDB$ROW_CLUSTER_FACTOR 列グループ重複係数 RDB$WORKLOAD RDB$DUPLICITY_FACTOR 列グループNULL係数 RDB$WORKLOAD RDB$NULL_FACTOR 索引カーディナリティ RDB$INDICES RDB$CARDINALITY 索引接頭辞カーディナリティ RDB$INDEX_SEGMENTS RDB$CARDINALITY 索引の平均の深さ
(Bツリーのみ)RDB$INDICES RDB$INDEX_DEPTH 索引キー・クラスタ化係数 RDB$INDICES RDB$KEY_CLUSTER_FACTOR 索引データ・クラスタ化係数 RDB$INDICES RDB$DATA_CLUSTER_FACTOR
例1次の例では、EMPLOYEESおよびJOB_HISTORY表とこれに関連付けられている索引のカーディナリティ統計情報が収集されます。索引接頭辞カーディナリティに対する値0の説明は「使用上の注意」を参照してください。
$ RMU/COLLECT OPTIMIZER_STATISTICS mf_personnel.rdb - _$ /STATISTICS=(CARDINALITY)/TABLES=(EMPLOYEES, JOB_HISTORY) - _$ /INDEXES=(EMP_LAST_NAME,EMP_EMPLOYEE_ID, EMPLOYEES_HASH, - _$ JH_EMPLOYEE_ID, JOB_HISTORY_HASH)/LOG Start loading tables... at 3-JUL-1996 09:35:25.19 Done loading tables.... at 3-JUL-1996 09:35:25.91 Start loading indexes... at 3-JUL-1996 09:35:25.92 Done loading indexes.... at 3-JUL-1996 09:35:26.49 Start collecting btree index stats... at 3-JUL-1996 09:35:28.17 Done collecting btree index stats.... at 3-JUL-1996 09:35:28.23 Start collecting table & hash index stats... at 3-JUL-1996 09:35:28.23 Done collecting table & hash index stats.... at 3-JUL-1996 09:35:28.52 Start calculating stats... at 3-JUL-1996 09:35:28.76 Done calculating stats.... at 3-JUL-1996 09:35:28.76 Start writing stats... at 3-JUL-1996 09:35:30.16 ---------------------------------------------------------------------- Optimizer Statistics collected for table : EMPLOYEES Cardinality : 100 Index name : EMP_LAST_NAME Index Cardinality : 83 Segment Column Prefix cardinality LAST_NAME 0 Index name : EMP_EMPLOYEE_ID Index Cardinality : 100 Segment Column Prefix cardinality EMPLOYEE_ID 0 Index name : EMPLOYEES_HASH Index Cardinality : 100 ---------------------------------------------------------------------- Optimizer Statistics collected for table : JOB_HISTORY Cardinality : 274 Index name : JH_EMPLOYEE_ID Index Cardinality : 100 Segment Column Prefix cardinality EMPLOYEE_ID 0 Index name : JOB_HISTORY_HASH Index Cardinality : 100 Done writing stats.... at 3-JUL-1996 09:35:30.83
例2
次の例では、EMPLOYEESおよびJOB_HISTORY表とこれに関連付けられている索引の記憶域統計情報が収集されます。
$ RMU/COLLECT OPTIMIZER_STATISTICS mf_personnel - _$ /STATISTICS=(STORAGE)/TABLES=(EMPLOYEES, JOB_HISTORY) - _$ /INDEXES=(EMP_LAST_NAME,EMP_EMPLOYEE_ID, EMPLOYEES_HASH, - _$ JH_EMPLOYEE_ID, JOB_HISTORY_HASH)/LOG Start loading tables... at 3-JUL-1996 10:28:49.39 Done loading tables.... at 3-JUL-1996 10:28:50.30 Start loading indexes... at 3-JUL-1996 10:28:50.30 Done loading indexes.... at 3-JUL-1996 10:28:51.03 Start collecting btree index stats... at 3-JUL-1996 10:28:53.27 Done collecting btree index stats.... at 3-JUL-1996 10:28:53.37 Start collecting table & hash index stats... at 3-JUL-1996 10:28:53.38 Done collecting table & hash index stats.... at 3-JUL-1996 10:28:53.80 Start calculating stats... at 3-JUL-1996 10:28:54.07 Done calculating stats.... at 3-JUL-1996 10:28:54.07 Start writing stats... at 3-JUL-1996 10:28:55.61 ---------------------------------------------------------------------- Optimizer Statistics collected for table : EMPLOYEES Row clustering factor : 0.2550000 Index name : EMP_LAST_NAME Average Depth : 2.0000000 Key clustering factor : 0.0481928 Data clustering factor : 1.1686747 Index name : EMP_EMPLOYEE_ID Average Depth : 2.0000000 Key clustering factor : 0.0100000 Data clustering factor : 0.9500000 Index name : EMPLOYEES_HASH Key clustering factor : 1.0000000 Data clustering factor : 1.0000000 -------------------------------------------------------------------- Optimizer Statistics collected for table : JOB_HISTORY Row clustering factor : 0.0930657 Index name : JH_EMPLOYEE_ID Average Depth : 2.0000000 Key clustering factor : 0.0500000 Data clustering factor : 0.9500000 Index name : JOB_HISTORY_HASH Key clustering factor : 1.0000000 Data clustering factor : 1.0000000 Done writing stats.... at 3-JUL-1996 10:28:56.41
例3
次の例では、SQL ALTER DATABASE文を使用して作業負荷の収集を有効にします。頻繁に実行される問合せを実行して作業負荷プロファイルを生成し、EMPLOYEESおよびJOB_HISTORY表(および関連付けられている索引)の作業負荷統計情報が収集されます。収集された統計情報が表示されます。
SQLの自然左側外部結合によって、1番目と3番目の作業負荷列グループが作成されます。SQL DISTINCT句によって、2番目と4番目の作業負荷列グループが作成されます。
$ ! Enable workload collection: $ SQL SQL> ALTER DATABASE FILENAME mf_personnel.rdb cont> WORKLOAD COLLECTION IS ENABLED; SQL> -- SQL> -- Execute frequently run SQL queries. SQL> -- SQL> ATTACH 'FILENAME mf_personnel.rdb'; SQL> SELECT DISTINCT * cont> FROM JOB_HISTORY NATURAL LEFT OUTER JOIN EMPLOYEES; . . . SQL> DISCONNECT DEFAULT; SQL> -- Disable workload collection: SQL> ALTER DATABASE FILENAME mf_personnel.rdb cont> WORKLOAD COLLECTION IS DISABLED; SQL> EXIT; $ $ ! Direct Oracle RMU to collect statistics for the EMPLOYEES and $ ! JOB_HISTORY tables. $ ! $ RMU/COLLECT OPTIMIZER_STATISTICS mf_personnel.rdb - _$ /TABLE=(EMPLOYEES, JOB_HISTORY)/STATISTICS=(WORKLOAD)/LOG Start loading tables... at 3-JUL-1996 10:40:00.22 Done loading tables.... at 3-JUL-1996 10:40:00.90 Start collecting workload stats... at 3-JUL-1996 10:40:03.43 Maximum memory required (bytes) = 6810 Done collecting workload stats.... at 3-JUL-1996 10:40:05.03 Start calculating stats... at 3-JUL-1996 10:40:05.32 Done calculating stats.... at 3-JUL-1996 10:40:05.32 Start writing stats... at 3-JUL-1996 10:40:06.91 ---------------------------------------------------------------------- Optimizer Statistics collected for table : EMPLOYEES Workload Column group : EMPLOYEE_ID Duplicity factor : 1.0000000 Null factor : 0.0000000 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 ---------------------------------------------------------------------- Optimizer Statistics collected for table : JOB_HISTORY Workload Column group : EMPLOYEE_ID Duplicity factor : 2.7040000 Null factor : 0.0000000 Workload Column group : EMPLOYEE_ID, JOB_CODE, JOB_START, JOB_END, DEPARTMENT_CODE, SUPERVISOR_ID Duplicity factor : 1.5420582 Null factor : 0.3649635 Done writing stats.... at 3-JUL-1996 10:40:07.46
例4
次の例では、システム・リレーション以外のデータベースのすべての表と索引のすべての統計情報(カーディナリティ、作業負荷、記憶域)が収集されます。出力は、ファイルstats_nosys.logに書き込まれます。
$ RMU/COLLECT OPTIMIZER_STATISTICS mf_personnel.rdb - _$ /LOG=stats_nosys.log
例5
次の例では、すべての表、索引およびシステム・リレーションのすべての統計情報(カーディナリティ、作業負荷、記憶域)が収集されます。出力は、ファイルstats_all.logに書き込まれます。
$ RMU/COLLECT OPTIMIZER_STATISTICS mf_personnel.rdb/SYSTEM_RELATIONS - _$ /LOG=stats_all.log
例6
次の例では、統計情報の収集からEmployeesおよびDepartments表が除外されます。
$ RMU/COLLECT OPTIMIZER_STATISTICS MF_PERSONNEL /LOG - _$ /EXCLUDE_TABLES=(EMPLOYEES,DEPARTMENTS)