データベースストレージの容量見積もり方法をOracle Databaseを例に解説

 2025.01.08  株式会社システムインテグレータ

データベースを有効に活用するために、適切にストレージ容量を見積もることが重要です。

本記事では、Oracle Databaseを例に、データベースストレージについての基本と容量見積もり方法を解説します。


本記事では、ソフトウェアテストの重要性や7つの原則などに解説します。

データベースストレージとは?

データベースストレージとは、データベース管理システム(DBMS)が使用する物理的な記憶領域のことを指します。Oracle Databaseの場合、以下のファイルを格納します。

  • データファイル
  • 制御ファイル
  • REDOログファイル
  • 初期化パラメータファイル
  • パスワードファイル

また、設定によってはアーカイブログファイルやフラッシュバックログファイルなどの追加ファイルもストレージ容量に含める必要があります。

容量見積の手順

データベースの容量見積もりは、構造的かつ計画的に進める必要があります。主要なステップは以下のとおりです。

  1. テーブル設計の確認
  2. データ型のサイズ確認
  3. 行数の見積もり
  4. テーブル容量の見積もり
  5. インデックス容量の見積もり

また、REDOログファイルや一時表領域などのテーブル・インデックス以外の容量も見積もる必要があります。これらはデータ更新頻度やアプリケーションの使用状況に応じて変動するため、運用を通じてストレージ容量を適宜調整することが重要です。

テーブル設計の確認

容量見積もりの第一歩は、テーブル設計の確認です。

Oracle Databaseでは、CREATE TABLE文を使用してテーブルを定義しますが、この段階で各列のデータ型やサイズを慎重に選択することが重要です。既存のテーブル定義を確認する場合は、DBMS_METADATAパッケージを利用してDDLを抽出しましょう。

 

SI Object Browser ERでは、テーブル定義からデータサイズを見積もる機能が備わっています。以下の記事もあわせてご参考ください。

https://products.sint.co.jp/ober/blog/dbsize

データ型のサイズ

Oracle Databaseでは、様々なデータ型が提供されており、それぞれ異なるストレージ要件があります。主なデータ型の特徴とストレージ要件は以下のとおりです:

  • NUMBER型:可変長で、精度と桁数に応じて1〜22バイトを使用
  • VARCHAR2型:可変長で、定義した最大長まで使用
  • DATE型:固定長で7バイトを使用
  • CLOB型:最大4GBまでの可変長テキストデータを格納

各列によってサイズが変わるため、各列のデータ型を確認し、1レコードあたりの必要な容量を見積もります。

行数の見積もり

次のステップはテーブルの行数の見積もりです。以下の方法で行数を見積もることができます:

  • 既存システムのデータ分析:類似のシステムを参考にして見積もり
  • ビジネス要件の分析:想定されるトランザクション量やデータの成長率を考慮
  • サンプルデータの作成:テストデータを生成し、実際のデータ量を推測

行数を見積もる際は、成長率や将来的な余剰容量も考慮し、余裕を持たせた見積もりを行いましょう。

テーブル容量の見積もり

テーブル容量 は、以下の簡易式で概算できます。Oracle Databaseでは、データブロック(デフォルト8k)にレコードが格納されるため、ブロックヘッダも考慮します。

テーブル容量 = (行の平均長 + ブロックヘッダ) × 行数 × オーバーヘッド

行の平均長:各列のサイズをデータ型に基づき算出した値

ブロックヘッダ:通常約100バイト。

オーバーヘッド:ブロック内の空き領域割合

より正確な見積もりには、DBMS_SPACE.CREATE_TABLE_COSTプロシージャやツールを使用します。

なお、既存データベースのサイズを確認するには、次のビューを活用できます。

  • DBA_SEGMENTSビュー:データベース全体のサイズを確認
  • USER_SEGMENTSビュー:特定のテーブルやインデックスのサイズを確認

インデックスのサイズ

インデックスは検索性能を向上させる重要な要素ですが、ストレージ容量には以下の点を考慮します:

  • インデックスタイプ:B-treeインデックス、ビットマップインデックスなど
  • インデックス列の数とデータ型:対象列の構成とサイズ
  • 一意性:一意インデックス(UNIQUE)か非一意インデックスか
  • 行数:インデックス対象テーブルの行数

 

インデックス容量の簡易計算式

インデックス容量 = (キー長 + ROWID長) × 行数 × (1 + 余裕率)

キー長:インデックス列のサイズ合計

ROWID長:通常6バイト

余裕率:通常25%程度

この式は概算であり、実際のインデックスサイズは、インデックスの種類や構造によって変動します。正確な見積もりが必要な場合は、ツールやプロシージャを活用することをおすすめします。

ツールを使った簡単な見積方法

既存のストレージ容量を見積もるには、以下のツールを使用してストレージ容量を見積もることができます。

  • DBMS_SPACEパッケージ:CREATE_TABLE_COSTCREATE_INDEX_COSTプロシージャを利用
  • SQL Developer:GUIベースのツールで、スキーマオブジェクトのサイズを視覚化
  • AWR(Automatic Workload Repository)レポート:実際の使用状況を分析

また、当社のSI Ob ject Browser ERでも見積もりが可能です。詳細は製品マニュアルをご覧ください。

まとめ

ストレージ容量見積もりは、システム設計の重要な工程です。以下のような要素を総合的に考慮する必要があります:

  • テーブル設計の確認
  • データ型の選定
  • 行数の見積もり
  • インデックスサイズの計算

適切なツールと計算式を活用することで、見積もりの精度を高めることができます。ただし、見積もりはあくまで予測であり、実際の使用状況とは異なる場合があります。そのため、定期的なモニタリングと必要に応じた調整も重要です。


RELATED POST関連記事


RECENT POST「コラム」の最新記事


コラム

バージョン管理システムとは?種類・用語・使い方を解説

コラム

マイクロサービスアーキテクチャとは?概要や採用するメリットなど

コラム

CI/CD/CDPとは?概要や活用メリット、具体的なツールを解説

コラム

ホワイトボックステストとブラックボックステストを解説

データベースストレージの容量見積もり方法をOracle Databaseを例に解説
新規CTA