SheepDev

SQL・テストデータ

100万行保存すると、DBは何GBになる?

使うツール

来年には100万件になる、と聞いてディスク容量を決めようとしても、件数だけでは答えが出ません。短いIDと状態だけの行と、長い本文を含む行では大きさが違うからです。さらに実際のDBには索引や管理情報もあります。DB容量概算では、これらを仮定として明示し、まず計算の見通しを作ります。実DBを測定する機能ではないので、細かい小数が表示されても実測の精密さを示しているわけではありません。

まずは1行200byteという仮定を置く

独立して確かめられる計算例
rows = 1000000
averageRowBytes = 200
indexFactor = 0.3
overheadFactor = 0.15
replicas = 1

base = 200000000 byte
index = 60000000 byte
overhead = 30000000 byte
total = 290000000 byte = 0.29 GB

行数を1000000、平均行サイズを200、索引係数を0.3、管理領域係数を0.15、複製数を1として計算します。係数は30%なら0.3です。30と入れると30倍分の追加になり、意味が大きく変わります。この例の0.3と0.15は説明用の仮定で、どのDBでも正しい値ではありません。自分の索引構成や測定値に根拠があるなら、そちらを使います。

このモデルでは索引も管理領域も、基本データ200MBに対する割合です。管理領域を索引込みの260MBへ掛ける計算ではありません。式は200MB×(1+0.3+0.15)です。結果が手計算と合わないときは、単位の前に『何に係数を掛けたか』を見ます。係数を一つずつ0にすると、どの項目が何byte増やしているかを切り分けられます。

文字数の合計を、そのまま行サイズにしない

画面上で100文字の本文でも、保存する文字コードによってbyte数は変わります。また、DBの行には値だけでなく行やページを管理する情報があり、可変長の値の配置方法も製品によって違います。JSONをダウンロードしたファイルの大きさを行数で割った値は、JSON表現の平均であってDB内の平均行サイズとは限りません。サンプルが何を測ったものなのかを記録します。

空の行だけや短い値だけを集めたサンプルでは、将来の長い本文を過小評価します。一方、最大長だけで全行を計算すると過大になることもあります。まず代表的な値の構成を考え、平均200byte、400byte、800byteという幅を試す方が、一つの根拠のない値を精密そうに扱うより判断に役立ちます。このツールにデータそのものを貼る必要はなく、件数と集計した仮定だけを入力します。

複製数2は、元の1台と追加2台ではない

同じ条件で複製数を2にすると、合計は580000000byteです。この欄は元データを含む総コピー数として読みます。主系1台と複製先1台なら2、主系1台と複製先2台なら3です。表示されるbaseBytes、indexBytes、overheadBytesは1コピー分の内訳で、bytesは複製を含む総量です。内訳だけを足した値と総量が違う理由を、圧縮や誤差と取り違えないようにします。

コピー数を増やしてもバックアップの保持世代を再現したことにはなりません。複製は同じ時点の状態を増やすモデルで、過去へ戻すための世代や変更履歴は別です。バックアップ、ログ、一時作業領域を見込むなら、それぞれの計算を分けて最後に合計します。既に平均行サイズへ含めた管理情報を係数でも二重に加算しないよう、入力の境界も明確にしておきます。

GBとGiBの違いで、容量が消えたように見える

290000000byteは0.29GBですが、GiBでは約0.2701です。同じbyte数を異なる単位で表しているだけで、差の分がDBへ消費されたわけではありません。クラウドの料金表、OSの表示、ツールの出力を比べるときは単位をそろえます。見積もりを共有するなら、まず整数のbyte数と使用した係数を残し、人が読みやすいGBやGiBを添えると比較しやすくなります。

一つの数字より、増える理由を説明できる見積もりにする

行数だけを2倍にすると、このモデルの総量も2倍です。平均サイズだけを2倍にしても同じです。しかし索引を一つ追加した影響は、その索引の構成や対象列次第なので『索引1個につき30%』とは読めません。入力を一つずつ変え、何が不確かなときに総量が大きく動くかを確かめます。その結果を、サンプル測定を増やすべき項目の優先順位に使います。

この数字だけでストレージ購入量、空き容量の警報値、性能保証を決めることはできません。更新や削除、保守中の作業領域、製品固有の保存方式は単純式の外側です。見積もりは『この条件ならこの規模』を共有する出発点として使い、実測値が取れたら仮定を置き換えます。小数点以下を増やすより、根拠のある入力へ更新する方が見積もりの質は上がります。

参考資料

使うツール

使い方・解説 →