物理データベースサイジング(レコード長・ページ設計・容量見積り)
DB容量は、行数と列の長さを掛けるだけでは決まりません。行やページの管理情報、空き領域、索引、旧バージョン、ログなどを考慮します。試験問題では指定された単純化モデルに従い、実システムでは実測と増加予測を組み合わせます。DBMS固有のサイズを一般的な固定値として扱わないことが出発点です。
行長を、指定された項目から求める
行長には固定長列、可変長列の実際の長さ、長さ情報、行ヘッダ、NULLの管理情報、アライメントなどが含まれます。VARCHAR(100)を100バイトとみなすことはできません。文字コードや実データ長によって変わり、NULLが消費する領域も製品ごとに異なります。問題に「管理情報を含む400バイト」とあれば、ヘッダをもう一度足さないようにします。
PostgreSQLの通常のページは8KiBですが、ページ構造や項目のサイズはその製品の仕様です。行識別の参照情報も、すべてのDBMSで常に不変というわけではありません。大きな可変長値を外部へ格納する方式などもあり、全値が常に同じページ内に収まると仮定しないようにします。
1ページの格納数を決める
記号 | 内容 |
|---|---|
B | ページサイズ |
H | ページ固定ヘッダ |
f | 更新用空き率 |
L | 行長 |
s | 行スロットなど、1行ごとの追加領域 |
この教材では、ヘッダを除いた領域に空き率を適用し、その残りから行長とスロットを消費するモデルを使います。有効容量U=(B−H)×(1−f)、格納行数n=floor(U/(L+s))です。空き率の適用対象がページ全体かデータ領域か、スロットを行長に含むかは、問題の指定を優先します。
格納数は端数を切り捨てます。総行数Rを保存するページ数P=ceil(R/n)は端数を切り上げます。切捨てと切上げの位置を変えると、端数のあるケースで不足容量を見積もることになります。平均行長を使った結果は平均的な見積りで、個々の大きな行が同じ割合で詰まる保証ではありません。
- 1. ページ当たりの固定量
- 2. 格納する行数に比例
- 3. 指定した比率を確保
ページごとの固定領域、行数に応じる領域、更新用の余裕を分けて見積もります。
具体例:3年後の会員テーブル
ページ8,192バイト、ヘッダ192バイト、更新用空き率20%、管理情報とスロットを含む平均行長400バイトとします。U=(8,192−192)×0.8=6,400バイト、n=floor(6,400/400)=16行です。現在2,000,000行、年間500,000行増加なら、3年後は3,500,000行になります。
P=ceil(3,500,000/16)=218,750ページ。テーブル容量は218,750×8,192=1,792,000,000バイトです。10進のGBなら1.792GB、2進のGiBなら約1.669GiBとなります。問題がGBをどの意味で定義しているかを確認して答えます。3,500,001行なら218,751ページとなり、端数のページも1ページ分を確保します。
更新の余裕と、テーブル外の容量
OracleのPCTFREEのような空き領域設定は、更新による行の伸長を吸収し、行移行などの追加アクセスを抑える目的があります。PostgreSQLのfillfactorなども空きを残しますが、更新版の保持や処理方式は異なります。行移行、行連鎖、外部格納を全製品で同じ現象として説明しないようにします。
空きを増やすと初期の格納密度は下がり、ページ数が増えます。更新の多い列、実際の行長分布、ページ分割や旧版の回収を見て調整します。空き率を増やせばすべての移行や追加I/Oを完全に防げるという保証もありません。
全体のストレージ計画には各索引のリーフ・内部ページ、WALやアーカイブ、作業用一時領域、バックアップ、レプリカを含めます。保存期間やピーク時の処理量を基にし、データ表だけの容量をそのまま必要ディスク容量にしないようにします。
演習1:端数の切上げ
条件:有効容量6,400バイト、1行400バイト、総行数3,500,001。管理情報は含まれている。
問い:格納行数と必要ページ数を求めよう。
解答例:16行/ページ、218,751ページ。
根拠:最後の1行にも追加の1ページが必要。218,750ページでは1行不足する。
演習2:更新用の空きを残す目的
条件:更新で可変長列が伸び、別ページへの行移行が発生するDBMSを使う。
問い:空き領域を確保する目的を説明しよう。(35字以内)
解答例:更新による行長増加を吸収し行移行を抑える。(21字)
根拠:格納密度とのトレードオフも確認する。
復習で確かめること
例の数値や業務条件を変えて同じ結論になるか確認してください。用語の定義だけでなく、問題文のどの条件から、どの制約・SQL・対策を選んだのかを自分の言葉で説明できれば、次の過去問に進みます。
出典と仕様を確認する
関連するテーマ
次におすすめの学習
編集・検証について
編集・検証:IT資格ラボ編集部
IPAが公開する試験要綱・シラバス・過去問題と、各技術の公式資料を優先して内容を確認しています。制度変更や誤りを確認した場合は、記事を見直して更新します。
編集方針・情報源・訂正方針を見る