業界トップクラスのデータベースエキスパート集団

株式会社アクアシステムズ

Tibero RDBMS 5検証
第6回「Tibero 5の検証:オプティマイザの実行計画」

 Tibero RDBMS 5検証

update:

第6回「Tibero 5の検証:オプティマイザの実行計画」

著者:金永昊

Oracleの互換性検証(実行計画:パラレル実行)

TiberoとOracle両方のデータベースに接続し、同じパラレルSQL文を実行して問題なく、実行できるかどうか、パラレル実行(※注1)の実行計画が一致しているかどうかを検証します。

※今回の検証では、パラレル実行計画のRows 、Bytes、Cost (%CPU)、Timeなどの性能関連項目は、対象にしていません。実行計画のアクセスパスのみが対象です。
※注1:パラレル実行とは、いくつかのプロセスが作業の一部を処理できるように実行作業を分解することです。複数のCPUがそれぞれの部分を同時に実行すると、データ量が多ければ多いほど非常に大きくパフォーマンスが向上できます。


検証の流れ

1) テスト用のテーブルとデータを作成する。

2) 用意したSQL文を実行して実行計画(アクセスパス)を確認する。

・Hash JoinパラレルSQL
・Nested LoopパラレルSQL


検証の結果

・Hash JoinパラレルSQL:OracleとTibero両方とも同じ実行計画が表示されました。


・Nested LoopパラレルSQL:Oracleの実行計画にNESTED LOOPS回数が1回多く表示されました。


Oracleの互換性検証(実行計画:パーティション)

TiberoとOracle両方のデータベースに接続し、同じSQL文を実行して問題なく、実行できるかどうか、パーティションの実行計画が一致しているか、パーティション・プルーニング(※注1)が適用されているかどうかを検証します。

※今回の検証では、パーティション実行計画のRows 、Bytes、Cost (%CPU)、Timeなどの性能関連項目は、対象にしていません。 実行計画のアクセスパスとパーティション・プルーニング(Oracle:Pstart| Pstop、 Tibero:PS|PE)が対象です。

※注1:パーティション・プルーニング (Partition Pruning)とは、オプティマイザがパーティションを対象外とすることによって、データ・アクセスを高速化することができ、オプティマイザによりSQL文のFROM句とWHERE句が分析され、パーティション・アクセス・リストを構築するときに不要なパーティションが削除され、必要なパーティションにアクセスする方法です。


検証の流れ

1) 用意したSQL文で、パーティション・テーブルと索引を作成する。

2) テスト用のデータを作成する。(Oracleのサンプル・スキーマを作成)

3) Select実行結果と実行計画(パーティション・プルーニング)を確認する。

・RANGE-HASH PARTITION
・LIST-HASH PARTITION


検証の結果

・RANGE-HASH PARTITION


・LIST-HASH PARTITION


Oracleの互換性検証(実行計画:複合クエリ)

TiberoとOracle両方のデータベースに接続し、同じSQL文(サブクエりと結合クエリ)を実行して問題なく、実行できるかどうか、実行結果の実行計画が一致しているかを検証します。

※今回の検証では、パーティション実行計画のRows 、Bytes、Cost (%CPU)、Timeなどの性能関連項目は、対象にしていません。 実行計画のアクセスパスのみが対象です。


検証の流れ

1) テスト用のテーブルとデータを作成する。

2) 用意したSQL文(サブクエリと結合クエリ)を実行する。

3) 実行結果と実行計画(アクセスパス)を確認する。


検証の結果

結果:実行計画が一致していませんでした。(アクセスパスと結合順序が不一致)



業界トップクラスのデータベースエキスパート集団
アクアシステムズ

データベースに関するすべての課題、トラブル、お悩みを解決します。
高難易度、複雑、他社対応不可案件など、お気軽にご相談ください。