HOME»データベーススペシャリスト掲示板»R3 午1 問2 設問1  (1)-e,(2)

データベーススペシャリスト掲示板


[0386] R3 午1 問2 設問1  (1)-e,(2)

 ゆきさん(No.1) 
文章内容が理解できなかったので質問です。

5.索引はバッファヒット率100%、テーブルはバッファヒット率0%と仮定すれば〜
とありますが、この索引とテーブルとは何を指しているのかがよくわからなかったです。

索引のバッファヒット率100%、テーブルのバッファヒット率0%の時と
索引のバッファヒット率100%、テーブルのバッファヒット率100%の時と
索引のバッファヒット率0%、テーブルのバッファヒット率100%の時で
どのような動きになるのか教えていただければ幸いです。
2022.09.19 07:31
にゃんちゃんさん(No.2) 
DB・ブロンズエキスパート
前提となる情報をまとめます。

索引:索引を構成する列の値に対応するデータテーブルのレコード場所(ポインタ)をまとめたもの

索引, ポインタ
1001, 1
1002, 2
1003, 3
1004, 4
...

テーブル:この文脈では「レコードの集まり」

バッファ:欲しいデータをすぐ取り出せる場所
  高速に読み書きできるが容量は小さい(キャッシュ・メモリなどとも呼ぶ)

ディスク:全データが保管されている場所
  読み書きには時間がかかる(ディスクI/O時間)

システムの規模によりますが、ディスクが保持するデータは大容量になるため
そのすべてを保持できるバッファを用意するのは難しいです。
よって、バッファそのものの容量を増やす努力はするとしても
よく使うデータだけバッファに入れておく仕様になります。

*****************前提終わり*******************




@索引のバッファヒット率100%、テーブルのバッファヒット率0%
  索引がバッファにすべて格納されています。
  WHERE句で索引の列を条件にした場合
  対応するポインタを、バッファの索引から調べます。
  見つけたポインタをもとに、ディスクのテーブルから探します。
  ディスクI/Oはテーブルのレコードのみ発生する。

A索引のバッファヒット率100%、テーブルのバッファヒット率100%
  索引だけでなく、テーブルまるごとバッファに格納しています。
  よって、このテーブルに関してはディスクとのやり取り(I/O)は発生しません。
  バッファの索引でポインタを見つけて、バッファのテーブルから探索行を取り出します。

B索引のバッファヒット率0%、テーブルのバッファヒット率100%
  このパターンは馴染みがないというか、テーブルまるごとバッファに入れる余裕があるなら
  索引もバッファに入れてAと同じにしたらいいんじゃないかと思いますが・・・

  憶測ですが、以下のような動きになるかと思います。
  まずはディスクにアクセスして索引を見に行って、対応するポインタを見つけます。
  その後、対応する行をバッファのテーブルから取り出します。
  よって索引のみ、ディスクとやり取りすることになります(試験ではおそらくこの時間は考慮しない)

以上をまとめると、違いはディスクI/Oが発生するかどうかで
@はテーブルの探索行数分のI/Oが発生
AはI/O発生しない
Bはポインタの情報のみI/Oが発生?
となります。
(補足や修正があれば、どなたかよろしくお願いします。)
2022.09.19 22:30
 ゆきさん(No.3) 
反応遅くなってすみません。
ご回答ありがとうございます。

ようやく索引とテーブルのバッファについて理解できました。
助かりました。
2022.09.27 21:55

【返信投稿用フォーム】

お名前(10文字以内)

顔アイコン


本文(2,000文字以内)

投稿削除用のパスワード(20文字以内)

プレビュー
※宣伝や迷惑行為を防止するため、当サイトとIPAサイト以外のURLを含む文章の投稿は禁止されています。
※同一人物が作成できるスレッドは24時間に1つまでに制限されています。

投稿記事削除用フォーム

投稿No. パスワード 
© 2016-2022 データベーススペシャリストドットコム All Rights Reserved.

Pagetop