【データベース】データの入出力を効率化する塊!DBMSの「ページ管理」|情報処理問題1000本ノック
データベースが膨大なデータを高速に処理できる秘密は、その「まとめ方」にあります。ディスクとメモリの間でデータをやり取りする最小の論理単位を攻略しましょう。
1. 【 問題 】:DBMSの物理的データ管理単位
【 問題 】 データベース管理システム(DBMS)の内部アーキテクチャにおいて、ディスク(補助記憶装置)やメモリ(主記憶装置)の間でのデータ転送(I/O処理)を効率化するために、ストレージ上の連続した物理的な記憶ブロックを一定の大きさにまとめた、データの読み書きおよび管理を行う最小の論理的な単位はどれでしょうか?
① レコード (Record)
② ページ (Page / ブロック)
③ セクタ (Sector)
④ シリンダ (Cylinder)
2. 正解:
正解: ② ページ(Page / ブロック)
3. 解説:1行ずつチマチマ運ばず、箱ごとドカンと運ぶ
データベースの性能を落とす最大のボトルネックは「ディスクの読み書き(ディスクI/O)」です。これを減らすために、DBMSはデータをページ単位で管理しています。
・ユーザーがSQL文で「社員番号10番のデータを1件だけ見せて(1レコード)」と要求したとします。
・このとき、DBMSはディスクからその1件だけをピンポイントで持ってくるのではなく、その1件が含まれている「ページ(一般的なDBMSでは4KB〜16KBの塊)」ごと丸ごとメモリ(バッファプール)に読み込みます。 ← ココが問題の正解!
・なぜそんなことをするのか?:プログラムは「近くにあるデータをついでに使う」という性質(空間的局所性)があります。ページごとまとめてメモリに載せておけば、次に「社員番号11番のデータが見たい」と言われた際、すでにメモリ(ページ内)にあるため、遅いディスクにアクセスせず一瞬でデータを返せるようになります(キャッシュ効果)。
★ ① レコード:テーブルにおける「1行分のデータ」を表す論理的な単位です。ページの中には、このレコードが複数詰め込まれています。
★ ③ セクタ:ハードディスクなどの物理的なメディア側において、ハードウェアがデータを読み書きする最小の物理的単位(通常512バイト〜4KB)です。DBMSではなく、ディスクの都合の単位です。
★ ④ シリンダ:ハードディスクにおいて、中心軸から同心円状に並ぶ複数のトラック(磁気ディスクの円盤上の通り道)が、上下に重なってできる円筒状の物理的な領域のことです。
1. 理解のコツ: 「ミカンの出荷」に例えてみましょう。
・データ1件(レコード)を「ミカン1個」とします。
・お客さんから「ミカンを1個ちょうだい」と言われるたびに、遠くの畑(ディスク)まで1個だけ採りに行くのは非効率ですよね。だから、あらかじめミカンを100個ほど詰めた「ダンボール箱(ページ)」単位で収穫して、手元の店(メモリ)に並べておきます。この、データを効率よく運ぶための『ダンボール箱』の役割がページです。
2. 試験対策 of 視点: 「連続したブロックをページとして」「ページ単位でデータを管理する」という、DBMSがディスクI/Oを最適化するための基本単位に関する記述が出たら「ページ(またはブロック)」が一択です。基本情報や応用情報の午前試験では、データベースの物理設計やバッファマネージャのキャッシュアルゴリズム(LRU方式などによるページの入れ替え)を理解するための超必須の基礎知識となります。
4. まとめ
「データベースがディスクとメモリの間でデータを出し入れする際の、複数レコードをひとまとめにした最小の論理管理単位」。これがページです。私たちが高速にSQLの検索結果を受け取れている裏側では、このページという巨大な塊が、メモリとストレージの間をバケツリレーのように超高速で行き交っています。