パフォーマンスチューニング

pg_catalog

pg_stat_user_functions ファンクションの利用状況を調べる

ユーザ作成したファンクションの実行統計情報(呼び出し回数と所要時間)を確認できます。現在のトランザクション中に呼び出されたものだけを確認するにはpg_stat_xact_user_functionsを使用するらしいのですが、こちらはいま一つ...
pg_catalog

PostgreSQL 実行SQLの統計情報を取得する

pg_stat_statements pg_stat_statements拡張モジュールをインストールする事で、サーバで実行されたすべてのSQL文のプラン生成時と実行時の統計情報を取得できるようになります。PostgreSQLにおいてSQL...
oracle

Oracle SQLチューニング・アドバイザを利用する

これまでSQL Developerからの利用は経験あったのですが、今回はSQL*Plusからの利用を試してみます。共有メモリにアドバイスを受けたいSQLが残っている場合(対象のSQL_IDがわかっている)は、SQL*Plusからの実行がお手軽そうだったためです。シンプルなSQLであれば自力でなんとかなるのですが、結合テーブルも多く複雑なSQLに対してのチューニングが数多く出てくる時は、「いちいち見ていられない」と思い今回チューニング・アドバイザの本格活用に踏み切りました。
oracle

Oracle V$SQLに関する少しマニアックな情報

実行したSQLを分析する際に何かと確認するのがV$SQLですが、他では書かれていないような少しマニアックな事を記載してみました。個人的にはパフォーマンスチューニングを行う際、意識している項目です。EXECUTIONS、CPU_TIME、ELAPSED_TIME等累積値で持つ項目がいくつかありますが、これらはLAST_LOAD_TIMEが更新されるタイミングでリセットされる点気を付けましょう。
動的パフォーマンス・ビュー

V$BHからバッファー・キャッシュの状況を確認する

V$BHとDBA_OBJECTSを結合すれば現在どんなオブジェクトがバッファ・キャッシュに乗っているのか確認する事が可能です。以下はサイズ(ブロック数)の大きいものから一覧表示しています。※以下SQLでは「キャッシュ」しているものです。バッ...
oracle

Oracle 実行計画の取得(実際に実行した結果の取得)

EXPLAIN PLANで実行計画(予定)を取得するのでははく、これは実際に動作したあと、「どのようなアクセスパスであったか」を出力します。その昔は、V$SQL_PLANを参照していましたが、こちらのほうが使い勝手よくなりました。
データ・ディクショナリ

DBA_TAB_MODIFICATIONS テーブルの更新状況を調べる

DBA_TAB_MODIFICATIONSで前回統計情報取得からの更新状況が分かります DBA_TAB_MODIFICATIONS/USER_TAB_MODIFICATIONSは前回統計情報取得後からテーブルへの変更がどのように行われたのか...
oracle

データベース・バッファ・キャッシュのクリア

パフォーマンス計測する際に活躍します。SQLを1度目実行した時より、2度目実行した時のほうがほぼ早くなると思いますが、その理由の一つがSQLで利用するテーブルや、インデックスがバッファー・キャッシュ(メモリ)にキャッシュオンしている事です。...
oracle

共有プール(SHARED POOL) の フラッシュ

長く稼働させていくと共有プールには断片化が発生します。インスタンスの再起動ができればいいですが、現実はなかなかそうもいきません。そんな時活躍するのがこちらです。あと、パフォーマンスチューニングの際も活躍しますね。パフォーマンスチューニングの際はバッファー・キャッシュのクリアもあわせて実施する必要あります。