統計情報と共有プール上の実行計画をうまく使う
オプティマイザ統計の扱いと、共有プールの理解はデータベース・システムを安定稼動させる上でたいへん重要なので、DBエンジニアの皆さん必読の記事ですね。
どんなに高価なインフラを用いても、オプティマイザの生成する実行計画の理解を誤ると、アプリケーションのパフォーマンス劣化を起こすといった自体も起こりえます。そのため、DBAや開発者の皆様がオプティマイザの"仕組み"を理解し、正しく扱えるということはSQLチューニングにおいて重要ですし、運用時にトラブルが発生した場合の対処知見としても、最も重要だと思います。
さて、オプティマイザ統計の記事で紹介されているDBMS_STATSパッケージの各プロシージャ、例えばDBMS_STATS.GATHER_TABLE_STATS には「no_invalidate」というオプションが用意されています。
このオプションを用いて、統計情報収集時に共有プール上の実行計画(依存カーソル)を無効化するか、しないかを制御できます。統計情報収集時に、ハードパースを行わせて即座に実行計画に反映させる、といったオペレーションも可能になります。
例えばOracle RAC環境で、各ノードのSQL実行計画を完全に一致させるため、統計情報収集時には「no_invalidate」を明示的に指定する、といったケースがあります。
システムの特性に応じて、統計情報と共有プール上の実行計画をうまく使うことが重要ですね。
この記事は参考になりましたか?
- オラクル・キュレーション by Oracle ACE連載記事一覧
- この記事の著者
-
矢木覚(ヤギサトル)
Oracle ACE SIerにおいて、Oracle Databaseの最新技術を用いた、企業システムの基幹システム設計/構築に携わる。大規模RACやOracle Exadataによるシステム設計・データベース統合等を行ってきた。その経験を基に、現在ではオラクルの技術を広めるエヴァ...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア