助け合いフォーラム
この問題はプレミアムコンテンツです。
「I/Oの最小単位」とはそもそも何でしょうか
Oracle Bronzeの問題ID 29715についてです。
「データ・ブロックに関する説明として、正しいものはどれですか。」という問いに対して
「データ・ブロックはOracle DatabaseのI/Oの最小単位である」が答えですが
そもそも、「I/Oの最小単位」とは何なのでしょうか。
「I/O」で調べたところ、インプット/アウトプットのことだと出てきました。
参考→https://e-words.jp/w/I-O.html
インプット/アウトプットのことを示しているのだとしても、「最小単位」という言葉が全くイメージできずひっかかってしまいます。
どうイメージするのが分かりやすいんでしょうか。
「I/O」については、おっしゃられているとおり「インプット/アウトプット」のことです。つまり、データの読み込み/書き込みを指しています。
この問題の解説や参考に以下の記述があります。
データ・ブロックには通常複数の行データが格納されているため、1行にアクセスしたい場合でも、データ・ブロックに含まれるすべての行データがロードの対象となります。
「I/Oの最小単位」ですので、Oracle Databaseがレコードの読み込みや書き込みを行う際には、データブロック単位で処理をしている、例えば、クライアントから「一行のレコードのみを結果として返すようなSELECT文」が投げられた場合でも、Oracle Databaseは「そのレコードが格納されているデータブロック」を丸ごと読みこみ(つまり複数のレコードを読み込んでいる)、その中の一行だけをクライアントに返すような動きをしています。
※正確にはキャッシュや書き込み遅延の話などがあり、ツッコミどころがあるかもしれませんが、大まかにいえばこういうことです。
すみません、疑問に思われている点に対する回答になっていないかもしれません。
コメント
Oracleは、データをブロック単位に分割して管理する「ブロックストレージ」を採用しています。
一つのデータが小さいブロックの集まりで構成されているイメージです。
その一つ一つのブロック(データの最小単位)が「データブロック」になります。
ちなみに、データブロックの集合体が「エクステント」、エクステントの集合体が「セグメント(表などのいわゆるオブジェクト)」になるので、
表や索引などは実質、無数の「データブロックの集まり」というイメージができれば良いのではないでしょうか。
文章より、ネットで「oracle 記憶域」とかで画像検索するとイメージ図が出てくるので、
検索してみてみるのも良いかもしれません。
初めてのアンサーで慣れておらず、説明下手ですみません。
試験頑張ってください!
コメント
この投稿に対して返信しませんか?