忘れかけのIT備忘録

今まで学んできた知識や小技、なるほど!と思ったことをメモするブログです。

Oracle-パフォーマンス

Oracleの待機イベント

今回はOracleの待機イベントについて調査、検証しました。 待機イベントとはプロセス(セッション)が処理できず(CPUを使用できず)、他の処理が完了するのを待っているイベント(出来事、アクション)です。たとえばプロセスA(セッションA)に対して「db …

OracleのAWR(概要)

今回はOracleのAWRについて調査、検証しました。 AWR(Automatic Workload Repository:自動ワークロードリポジトリ)とはOracle 10gから登場した機能で、データベースの統計情報とワークロード(処理の負荷)情報をスナップショットとして定期的(デフォル…

Oracleの実行計画(SPM)

今回はOracleの実行計画のSPMについて調査、検証しました。 SPM(SQL Plan Management:SQL計画管理)とはOracle 11gから登場した機能で、SQLごとに実行計画を固定化したり、統計情報の変化によって新たに生成された最適な実行計画を候補として登録したりな…

Oracleの実行計画(表結合)

今回はOracleの実行計画のうち、テーブルの結合について調査、検証しました。 テーブルの結合方法は4種類(ネステッドループ結合、ソートマージ結合、ハッシュ結合、直積結合)あり、それぞれ下記の図のような特徴があります。なお、3つ以上の表を結合する場…

Oracleの実行計画(全表スキャンと索引スキャン)

今回はOracleの実行計画について調査、検証しました。 実行計画とは・SQLの実行手順(データへのアクセスパス、テーブルの結合方法、テーブルの結合順序の組み合わせから構成される)・オプティマイザ(CBO)が実行コストを基に作成する 【補足】CBO(コストベー…

OracleのSELECT文の評価順序

今回はOracleのSELECT文の評価順序について調査、検証しました。 SELECT文は列別名を指定できる句がありますが、一部の句(WHERE句、GROUP BY句など)では列別名を指定できません。理由はSELECT文で指定する句の評価順序があるためです。SELECT文で指定する句…

OracleのSQLの動き(ハードパースとソフトパース)

今回はOracleのSQLの具体的な処理の流れについて調査しました。 SQLは主に下記の順番で処理されます。SQLの発行→カーソルオープン→SQL文の解析(文法チェック、解析、実行計画の作成など)→SQL文の実行→(フェッチ)→カーソルクローズ※フェッチはSELECTのみSQL文…

OracleのSQLの動き(参照と更新)

今回はOracleのSQLの動きを調査しました。参照系はSELECT、更新系はUPDATEを使用してSQLの動きを見てみました。 SQLの処理の流れSQLが実行されると主に3つのフェーズに分けて処理されます。 PARSE(解析フェーズ)・SQL文の構文、意味の妥当性も含めた文法チェ…

Oracleの統計情報(クラスタ化係数編)

今回はOracleのクラスタ化係数について調査しました。 Oracleの統計情報 - 忘れかけのIT備忘録で少しだけ触れましたが、クラスタ化係数は索引の列データと表の列データの分布度(データの格納順がどれくらい異なるかの指標)です。索引の列データに格納されて…

Oracleの統計情報(ヒストグラム編)

今回はOracleの統計情報のうち、ヒストグラムについて調査しました。 Oracleの統計情報 - 忘れかけのIT備忘録で少しだけ触れましたが、ヒストグラムは表の列データの分布状況です。セレクティビティ(行の選択率)のコストを見積もるために使用される統計情報…

Oracleの統計情報

今回はOracleの統計情報について検証しました。 統計情報(オプティマイザ統計とも呼ばれます)は、SQLの処理(ワークロード)の見積もりに必要なデータ(サーバやOS、データベースの特性を数値化したもの)です。オプティマイザが実行計画を作成/選択する際、アク…