作業負荷統計を有効にし、統計情報を収集している場合、システム表RDB$WORKLOADが作成され、情報が格納されます。(詳細は、第1.15節を参照してください。)これらの統計情報を更新または削除するには、RMU Collect Optimizer_StatisticsコマンドまたはRMU Delete Optimizer_Statisticsコマンドをそれぞれ使用します。RDB$WORKLOAD表のエントリを誤って削除したり、特定の作業負荷統計情報を保持する効果をテストするためにエントリを削除する場合があります。削除した統計情報を存続させるには、RMU Insert Optimizer_Statisticsコマンドを使用して統計情報を挿入します。正確な値が挿入されるようにするには、RMU Delete Optimizer_Statisticsを発行する前、常にLog修飾子を指定してRMU Show Optimizer_Statisticsコマンドを発行します。RMU Insert Optimizer_Statisticsコマンドで指定する値について、生成されたログ・ファイルを確認します。
また、RMU Insert Optimizer_Statisticsコマンドを使用して、マスター・データベースのコピーに作業負荷統計を作成できます。
RMU Insert Optimizer_Statisticsコマンドを発行した後でRMU Collect Optimizer_Statisticsコマンドを発行すると、指定した列グループの統計情報が更新されます。
root-file-spec
オプティマイザ統計情報を挿入するデータベースを指定します。デフォルトのファイル・タイプは.rdbです。
Column_Group=(column-list)
列グループを構成している列のリストを指定します。列が関連付けられている表を指定するには、Tables修飾子を使用する必要があります。Column_Group=(column-list)修飾子は必須修飾子です。
Duplicity_Factor=(floating_number)
指定した列グループおよび表に対し、RDB$WORKLOAD表のRDB$DUPLICITY_FACTOR列に挿入する値を指定します。最小値は1.0で、最大値は、指定した表のカーディナリティです。デフォルトはDuplicity_Factor=(1.0)修飾子です。Log
Log=file-spec
Nolog
RDB$WORKLOADシステム表に挿入する統計情報の記録方法を指定します。SYS$OUTPUTに情報を出力する場合は、Log修飾子を指定します。情報をファイルに出力する場合は、Log=file-spec修飾子を指定します。情報を出力しない場合は、Nolog修飾子を指定します。どの種のLog修飾子も指定しない場合、デフォルトはDCL検証スイッチの現在の設定です。(DCL SET VERIFYコマンドでDCL検証スイッチを制御します。)Null_Factor=floating-number
指定した列グループおよび表に対し、RDB$WORKLOAD表のRDB$NULL_FACTOR列に挿入する値を指定します。最小値は0.0で、最大値は1.0です。デフォルトはNull_Factor=(0.0)修飾子です。Tables=(table-list)
Tables
列グループのエントリを挿入する表を指定します。作業負荷列グループをRDB$WORKLOADシステム表に挿入した後でRMU Collect Optimizer_Statisticsコマンドを発行すると、その統計情報が収集されます。
Tables=(table-list)修飾子は必須修飾子です。
- データベースに対してRMU Insert Optimizer_Statisticsコマンドを使用するには、データベースのルート・ファイル・アクセス制御リスト(ACL)にRMU$ANALYZE権限を持っているか、OpenVMSのSYSPRVまたはBYPASS権限を持っている必要があります。
- カーディナリティ統計は、Oracle Rdbによって自動的に保持されます。物理ストレージと作業負荷の統計情報は、RMU Collect Optimizer_Statisticsコマンドを発行した場合にのみ収集されます。特定の問合せに対する物理ストレージと作業負荷の統計情報を得るには、RDMS$DEBUG_FLAGS論理名に"O"を定義します。次に例を示します。
$ DEFINE RDMS$DEBUG_FLAGS "O"
問合せを実行する際、作業負荷および物理統計が問合せの最適化に使用された場合、コマンド出力に次のような行が表示されます。
~O: Workload and Physical statistics used
- Insert Optimizer_Statisticsコマンドでは、RDB$WORKLOAD行の日付RDB$LAST_ALTEREDが変更され、オプティマイザで使用できるようアクティブになります。
例1次の例では、次のようになります。
- RMU Collect Optimizer_Statisticsコマンドを使用してJOB_HISTORY表に対する作業負荷統計情報を収集します。
- JOB_HISTORYの作業負荷列グループのうち、1つの列グループの統計情報を削除します。
- RMU Insert Optimizer_Statisticsコマンドを使用して、RDB$WORKLOADシステム表から先ほど削除した統計情報を挿入します。
- RMU Show Optimizer_Statisticsコマンドを使用して、RDB$WORKLOAD表に格納されているJOB_HISTORY表に関する現在のデータを表示します。
$ RMU/COLLECT OPTIMIZER_STATISTICS MF_PERSONNEL.RDB - _$ /TABLE=(JOB_HISTORY)/STATISTICS=(WORKLOAD)/LOG Start loading tables... at 3-JUL-1996 10:54:04.16 Done loading tables.... at 3-JUL-1996 10:54:04.69 Start collecting workload stats... at 3-JUL-1996 10:54:06.76 Maximum memory required (bytes) = 6810 Done collecting workload stats.... at 3-JUL-1996 10:54:07.64 Start calculating stats... at 3-JUL-1996 10:54:07.84 Done calculating stats.... at 3-JUL-1996 10:54:07.86 Start writing stats... at 3-JUL-1996 10:54:09.34 --------------------------------------------------------------------- Optimizer Statistics collected for table : JOB_HISTORY Workload Column group : EMPLOYEE_ID Duplicity factor : 2.7400000 Null factor : 0.0000000 Workload Column group : EMPLOYEE_ID, JOB_CODE, JOB_START, JOB_END, DEPARTMENT_CODE, SUPERVISOR_ID Duplicity factor : 1.5930233 Null factor : 0.3649635 Done writing stats.... at 3-JUL-1996 10:54:09.90 $ RMU/DELETE OPTIMIZER_STATISTICS MF_PERSONNEL.RDB - _$ /TABLE=(JOB_HISTORY)/COLUMN_GROUP=(EMPLOYEE_ID,JOB_CODE, - _$ JOB_START,JOB_END,DEPARTMENT_CODE,SUPERVISOR_ID)/LOG Changing RDB$SYSTEM area to READ_WRITE. Workload column group deleted for JOB_HISTORY : EMPLOYEE_ID, JOB_CODE, JOB_START, JOB_END, DEPARTMENT_CODE, SUPERVISOR_ID $ ! $ RMU/INSERT OPTIMIZER_STATISTICS MF_PERSONNEL.RDB - _$ /TABLE=(JOB_HISTORY) /COLUMN_GROUP=(EMPLOYEE_ID,JOB_CODE, - _$ JOB_START,JOB_END,DEPARTMENT_CODE,SUPERVISOR_ID) - _$ /DUPLICITY_FACTOR=(1.5930233)/NULL_FACTOR=(0.3649635)/LOG Changing RDB$SYSTEM area to READ_WRITE. Workload column group inserted for JOB_HISTORY : EMPLOYEE_ID, JOB_CODE, JOB_START, JOB_END, DEPARTMENT_CODE, SUPERVISOR_ID $ ! $ RMU/SHOW OPTIMIZER_STATISTICS MF_PERSONNEL.RDB - _$ /TABLE=(JOB_HISTORY)/STATISTICS=(WORKLOAD)/LOG -------------------------------------------------------------------- Optimizer Statistics for table : JOB_HISTORY Workload Column group : EMPLOYEE_ID Duplicity factor : 2.7400000 Null factor : 0.0000000 First created time : 3-JUL-1996 10:37:36.43 Last collected time : 3-JUL-1996 10:54:09.62 Workload Column group : EMPLOYEE_ID, JOB_CODE, JOB_START, JOB_END, DEPARTMENT_CODE, SUPERVISOR_ID Duplicity factor : 1.5930233 Null factor : 0.3649635 First created time : 3-JUL-1996 10:57:47.65 Last collected time : 3-JUL-1996 10:57:47.65