ArcSDE XML 格納用に Oracle インスタンスをチューニングするためのスクリプト

ArcSDE for Oracle には、ArcSDE XML データ格納時のパフォーマンスを最適化するように Oracle インスタンスを設定するためのスクリプトとして、SDEHOME > tools > oracle ディレクトリにxml_lob_block_distribution.sql と xml_lob_cache_size.sql の 2 つが用意されています。

xml_lob_block_distribution

これは、テーブルにおける XML データの分散状況をレポートするスクリプトです。XML 列のあるテーブルの名前を入力すると、次の各ブロックで XML データの分散が返されます。

この情報を使用すると、大部分の XML データのサイズがわかります。XML データのほとんどが 8KB 未満であるにもかかわらず 16KB のブロック サイズを使用している場合は、データベースの領域を無駄にしていることになります。クエリの応答に 2 倍のメモリが使用され、その半分は使用されていません。代わりに 8KB のブロック サイズを使用すれば、応答にもキャッシュにも 2 倍のデータを含めることができ、同じレコード数を返すクエリでもデータベースからの読み取りが少なくなる可能性があります。一方、XML データの大部分が 16KB より大きいときに 8KB のブロック サイズを使用している場合は、16KB のブロック サイズを使用する場合に比べて、データを保持するブロックの数が 2 倍になります。これは、応答のたびにビジネス テーブルの同じレコード数に対するディスクからの読み取り回数を 2 倍にする必要があることになり、クエリのパフォーマンスが低下します。

xml_lob_cache_size

xml_lob_cache_size スクリプトを使用すると、指定したブロック サイズにおける XML データのキャッシュ要件を見積もることができます。xml_lob_block_distribution スクリプトの場合と同様に XML 列のあるテーブルの名前を入力するほか、ブロック サイズも指定します。ブロック サイズを指定しない場合は、現在の db_block_size を使用して見積もりを行います。

このスクリプトで返される情報から、検索のパフォーマンスを最適化するために LOB キャッシュをどのくらい大きく設定しなければならないかを判断できます。

メモメモ:

既存の Oracle データベースのブロック サイズは変更できません。この 2 つのスクリプトによって、XML クエリを最適化するにはブロック サイズの変更が必要であると示された場合は、既存データベースのバックアップを作成し、適切なブロック サイズで新しいデータベースを作成して、データをその新しいデータベースに移行する必要があります。


3/6/2012