忘れかけのIT備忘録

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

2023-01-01から1年間の記事一覧

OCJP Bronze SE / Silver SE11 受験記

この記事は、JPOUG Advent Calendar 2023 16日目の記事です。15日目は wmo6hash さんの記事 「働き方の新しいスタイル」への仕事道具最適化'23 - wmo6hash::blog でした。 去年はOracle Databaseの従来型監査の検証について書きましたが、今年はOCJPを受験し…

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、データベースの特性を数値化したもの)です。オプティマイザが実行計画を作成/選択する際、アク…

sqlplusの/nologオプション

今さらですがsqlplusで/nologオプションを指定するメリットを知ったので軽く検証しました。 /nologオプションSQL*Plusを起動する際、データベースに接続しない メリット一例として、データベースに接続せずにSQL*Plusを起動するため、UNIX系OSでpsやhistory…

Oracleの読取り一貫性

今回はOracleの読取り一貫性について調査しました。 読取り一貫性とは、特定のトランザクションがSELECT文(データ読込み)を開始した時点で確定しているデータを読み込ませる機能です。いったんOracleのSELECT文(データ読込み)の動きを復習します。 SELECT中…

トランザクションのACID特性と分離レベルの概要

今回はトランザクションのACID特性と分離レベルについて調査しました。 ACID特性とは、トランザクションで処理するデータの整合性を保つ(データの信頼性を保証する)ために必要な4つの特性です。Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、…

Oracleのロック検証(デッドロック編)

今回はOracleのデッドロックについて検証しました。 デッドロックとは、2つ以上のセッションのトランザクションがお互いにロック解除待ち状態に陥る状態です。お互いのセッションのトランザクションが相手のロック解除を待っているため、いずれのセッション…