| Oracle9i Heterogeneous Connectivity管理者ガイド リリース2(9.2) 部品番号B13816-01 |
|
この章では、分散SQL文の最適化方法、Oracle Transparent Gatewayでのパーティション・ビューの使用方法および分散問合せのパフォーマンスの最適化方法について説明します。
この章の内容は、次のとおりです。
Oracle以外のシステムからのデータにアクセスするSQL文を、異機種間の分散SQL文と呼びます。この種のSQL文を最適化するには、Oracleデータベースにのみアクセスする分散SQL文を最適化する場合と同じガイドラインに従います。 ただし、通常、Oracle9iでサポートされている関数と演算子がすべて、Oracle以外のシステムでサポートされるわけではないことを考慮する必要があります。
Oracle Transparent Gatewayは、Oracleに対して(接続時に)、サポート対象の関数と演算子を指示します。 その他のデータ・ソースで関数または演算子がサポートされていない場合は、Oracleがその関数または演算子を実行します。この場合、Oracleはそのデータ・ソースからデータを取得し、関数または演算子をローカルに適用します。これはSQL文の分解方法に影響し、特にOracleが相手データ・ソースと同じマシン上にない場合には、パフォーマンスが低下する場合があります。
Oracle Transparent Gatewayリリース8以上でパーティション・ビューを使用できます。 必ず次のルールに従ってください。
ヒントを使用するか、OPTIMIZER_MODEパラメータをALL_ROWS、FIRST_ROWS_KまたはFIRST_ROWSに設定します。
ゲートウェイがOracle以外のシステムの索引情報をOracleサーバーに送信するかどうかは、ゲートウェイ固有のマニュアルで確認してください。 ゲートウェイが索引情報をオプティマイザに送信する場合は、各パーティションで同数の索引が使用されていること、および索引付けした列が同じであることをが必要です。
ゲートウェイが索引情報を送信しない場合は、Oracleオプティマイザで各パーティションの索引が認識されません。 このため、索引はOracle以外のシステムの各パーティションで同じであると見なされます。 パーティションの1つがOracleサーバー上にある場合、そのパーティションで索引が定義されていても、使用できません。
UNION ALLビュー内のすべてのブランチの列名および列データ型は同じである必要があります。
Oracle以外のシステムのデータ型は、Oracleのデータ型にマップされます。 Oracle以外の様々なシステムに存在する各パーティションのデータ型が、すべて同じOracleのデータ型にマップされることを確認します。 データ型がOracleのデータ型にどのようにマップされるかを確認するには、SQL*PlusでDESCRIBE文を実行します。
分散問合せのパフォーマンスを改善するには、複数の方法があります。次にそれぞれの方法を示します。
多くの場合、同じ結果が得られるSQL文が複数存在します。すべての表が同じデータベースにある場合、これらのSQL文のパフォーマンスの違いはほとんどありません。ただし、表が異なるデータベースにある場合は、パフォーマンスの違いが大きくなることがあります。
コストベース・オプティマイザはリモート表の索引を使用し、ルールベース・オプティマイザに比べると多数の実行計画を考慮するため、通常はより適切な結果が得られます。 コストベース・オプティマイザを使用すると、通常は分散問合せで妥当なパフォーマンスが得られます。SQL文の変更、ビューの作成または手続き型コードの使用が必要になることはほとんどありません。
ビューを使用すると分散問合せのパフォーマンスを改善できる場合があります。次に例を示します。
まれに、PL/SQLプロシージャやプリコンパイラ・プログラムなど、手続き型コードで分散問合せを置き換えるほうが効率的な場合があります。このオプションが必要になることはまれなので、ここでは詳細な記述は省略します。
|
|
![]() Copyright © 2001, 2002 Oracle Corporation. All Rights Reserved. |
|