0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Oracleのconsistent gets, db block gets がようやくわかった気がする。

0
Posted at

はじめに

SQLのconsistent gets,db block gets、昔から存在を知っていたけど最近、ちゃんと見る必要が出てきて、あれ?2つの違いって何だろう。
と調べてハマって理解したつもり?なので、参考までに残します。

調べてハマったこと

Geminiに最初教えてもらったら

(本記事を書くのに再度聞いたら、既に補正されていた。)

db block gets は、バッファキャッシュから読み取るため、ブロックを要求した回数
consistent gets は、読み取り一貫性を要求した回数

つまり、「db block gets」は、「consistent gets」を内包していると。
(※ ここが認識違い)

他のサイトの統計を見ていたら

統計
----------------------------------------------------------
          0  recursive calls
          0  db block gets
          6  consistent gets
          3  physical reads

あれ、内包しているなら、「db block gets」が「0」で、「consistent gets」が「6」ってなんでだろう。と疑問を抱く。

Oracleのサイトを見ていたら

「db block gets」は、CURRENTブロックが要求された回数。
「consistent gets」は、ブロックの読取り一貫性が要求された回数。

あれ?「db block gets」の考えが違いそう。

改めてGeminiにOracleのサイトを連携したら。

Gemini曰く、Oracleのサイトが正しい。一般的な会話やチューニングの場では「db block gets」は、よりシンプルに総論理読み取りを指すことが多い。
Gemini的には、「Oracleのサイトのdb block gets」=「Current Gets」という単語でお話していたってことでした。

すごく腹落ち。

とすると、

「db block gets」は、「consistent gets」を内包していない。

「db block gets」は、CURRENTブロックが要求された回数。
「consistent gets」は、ブロックの読取り一貫性が要求された回数。

次なる疑問が出てくる。

CURRENTブロックとは?

Geminiに聞いてみる。

CURRENTブロックとは、最新情報を保持しているブロック。
類似で、読み取り一貫性ブロックというのがある。

とのこと。

常に一人しか、参照、更新をしない場合は、CURRENTブロックだけで事足りる。と思う。
とはいえ、実際は、複数人の方が、同時に参照、更新する。

この際に、ある人が参照した際に、別の方の更新作業中の影響を受けないように、制御する必要がある。

1)Aさんが、AテーブルのAレコードを参照しようとする。
2)並行して、Bさんが、AテーブルのAレコードを更新しようとする。

この際に、Aさんは、Bさんが更新作業中なので更新前の情報を取得できる必要がある。

みたいなことを実現するため、CURRENTブロックと読み取り一貫性ブロックがあると思う。

どういう時にカレントブロックの取得が必要?

Geminiに聞いてみる。

1.DML
2.DDL
3.SELECT FOR UPDATE

各々、最新情報を更新、参照+ロック する必要があるから。納得。

どういう時に読み取り一貫性ブロックが必要?

Geminiに聞いてみる。

1.一般的なSELECT
2.レポート作成などの時間のかかるクエリ
3.フラッシュバッククエリ

ある時点の参照をする必要があるから。納得。

改めて思ったこと

Geminiのお話は、すごく理解しやすいので入りに利用するのは良き。
で、少し理解し始めたら、公式サイトを読んでみて、考えてみる。
で、分からなかったらGeminiに渡してみて、また考えてみる。

が良さげかな。

その他お世話になったサイト

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?