3.4.4 Exadataシステム統計の使用
システム統計によってCPUとストレージのパフォーマンスが測定され、Oracle DatabaseオプティマイザでSQL実行プランを評価する際にこれらの入力を使用できます。
最初のインスタンスの起動時に、Oracle Databaseはデフォルトのシステム統計を自動的に収集します。この統計は、noworkload統計とも呼ばれます。ただし、Exadata固有のシステム統計を収集することもできます。Exadataシステム統計により、Oracle Exadata Database Machineのパフォーマンス特性が考慮されることがSQLオプティマイザで保証されます。
Exadata固有の統計が使用されているかどうかを確認するには、次のSQLコマンドを使用します。
SQL> SELECT pname, PVAL1 FROM aux_stats$ WHERE pname='MBRC';
PVAL1
がNULLの場合、デフォルトのシステム統計が使用されます。
次のコマンドは、データベース・オプティマイザが使用するExadataシステム統計を収集します。
SQL> exec DBMS_STATS.GATHER_SYSTEM_STATS('EXADATA');
必要に応じて、DBMS_STATS.DELETE_SYSTEM_STATS
プロシージャを使用してデータベースを再起動することで、デフォルトのシステム統計に戻すことができます。
新しいアプリケーションまたはデプロイメントの場合、本番前システム・テストを実行して、デフォルトのシステム・パフォーマンスをExadataシステム統計を使用したパフォーマンスと比較する必要があります。
既存のアプリケーションまたはデプロイメントの場合、Exadataシステム統計は、本番システムで初めて使用する前に、同等のテスト・システムで生成およびテストする必要があります。このアプローチにより、本番システムでの予期しないパフォーマンス低下のリスクが軽減されます。
同等のテスト・システムが使用できない場合、本番のExadataシステム統計をテスト・システムにコピーすることで、より現実的なテストを実行できます。手順は次のとおりです。
-
本番システムで統計表を作成します。
次に例を示します:
SQL> exec DBMS_STATS.CREATE_STAT_TABLE(stattab => 'exadata_stats');
-
本番システムで、新しく作成した表にExadataシステム統計を収集します。
次に例を示します:
SQL> exec DBMS_STATS.GATHER_SYSTEM_STATS(gathering_mode => 'EXADATA', stattab => 'exadata_stats');
ユーザー定義統計表に格納されている統計は、システムでは使用されません。そのため、これらの統計を収集しても、本番システムのパフォーマンスには影響しません。
-
本番システムからテスト・システムに統計表をコピーします。
データ・ポンプのエクスポートやインポートなど、様々な方法で表をコピーできます。
-
テスト・システムで、統計表をOracleデータ・ディクショナリにインポートします。
次に例を示します:
SQL> exec DBMS_STATS.IMPORT_SYSTEM_STATS(stattab => 'exadata_stats');
関連トピック