LoginSignup
5
5

More than 3 years have passed since last update.

SQLの処理の流れ

Posted at

Oracleの基本的なアーキテクチャについてはこちら

SQLの処理の流れ

共有プール

  1. SQLが発行されるとサーバプロセスがそのSQLを受け取り、SQLの処理を行う。
  2. まずは、共有プール上でSQLの解析結果が無いかチェック。
  3. 解析結果があれば、それを再利用(ソフトパース)。なければ、解析を行い解析結果を共有プール上に保持(ハードパース)。 スクリーンショット 2019-07-01 14.55.46.png

データベースバッファキャッシュ

  1. 共有プールで処理がされたあと、DBバッファキャッシュにSQLを処理するためのデータがあるかチェック。
  2. 必要なデータがあればそれを再利用。なければ、DBWR(データベース・ライター・プロセス)がデータファイルから必要なデータをDBバッファキャッシュ上に読み込む。
  3. 今回発行されたSQLがデータの検索(select)であれば、そのまま結果をユーザプロセスに返す。検索ではなく、変更処理(DML(insert/update/delete))であれば、DBバッファキャッシュ上でデータの変更を行う。 スクリーンショット 2019-07-01 14.56.01.png

REDOログバッファ(※変更処理の場合)

  1. データを変更すると、その変更履歴(REDOレコード)が生成され、REDOログバッファにためられる。
  2. REDOログバッファにある程度の変更履歴がたまると、LGWR(ログ・ライター・プロセス)がオンラインREDOログ・ファイルに変更履歴を書き出す(未コミットも含め書き出す)。 スクリーンショット 2019-07-01 14.56.11.png

データベースバッファキャッシュ(※変更処理の場合)

  1. DBバッファキャッシュ上の変更済みのデータはDBWRがデータファイルに書き出す。 スクリーンショット 2019-07-01 14.56.20.png
5
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
5