TOPサーバ構築・運用> はじめに
徹底比較!! PostgreSQL vs MySQL
徹底比較!! PostgreSQL vs MySQL

第2回:データ構造の比較
著者:NTTデータ   藤塚 勤也   2006/4/18
1   2  3  4  次のページ
はじめに

   RDBMSが管理するデータには、テーブル/インデックス/トランザクションログなどの様々な種類があります。そしてRDBMSはこれらをディスクに格納することによって、データの永続性を保っています。

   一口にディスク上にデータを格納するといっても、ディレクトリ構造やファイルの配置/形式/種類などと様々な構造があり、そしてこの構造はRDBMSごとに異なります。そこで今回は、PostgreSQLとMySQLそれぞれのデータベースのデータ構造ついて解説します。


PostgreSQLのディレクトリ構造とファイル

   まずは、PostgreSQLのデータベースディレクトリを作成した時のディレクトリ構造を次に示します。

PostgreSQLのデータベースディレクトリ
図1:PostgreSQLのデータベースディレクトリ

   PostgreSQLでは、このデータベースディレクトリのことをデータベースクラスタと呼びます。データベースディレクトリには、設定用のファイルや起動オプション情報を格納したファイルなどが存在します。

   またデータベースディレクトリには、いくつかのサブディレクトリが存在します。サブディレクトリは以下のようになっています。

pg_xlog、pg_clog
トランザクション関連のログファイルを格納します。
global
グローバルシステムカタログ用の各種テーブルファイルを格納します。グローバルシステムカタログとは、全データベース共通のデータベースを構成する要素(テーブルやインデックス)の情報などを格納するためのものです。
base
ユーザデータベースの各種ファイルを格納します。

表1:PostgreSQLのサブディレクトリ表

   なお初期状態の「base」ディレクトリには、3つのサブディレクトリが存在します。そのうちの「1(template0データベース)」と「10792(template1データベース)」はユーザデータベースのひな形として使用され、「10793(postgresデータベース)」はユーティリティやユーザ、サードパーティ製アプリケーションのデフォルトデータベースとして使用されます。

   ここでユーザが新たなデータベースの作成を行うと、PostgreSQLはそのデータベース用のサブディレクトリを作成します。さらに、この新たなデータベース内にテーブルやインデックスを作成すると、そのテーブルやインデックスのファイルはすべて新たなデータベース用のサブディレクトリ内に作成される構造になっています。

   また、PostgreSQLのテーブル並びにインデックスは、すべて独立したファイルとして存在します。つまり10個のテーブルと20個のインデックスを作成すると、そのデータベース用サブディレクトリ内に30個のファイルが新たに作成されることになります。

1   2  3  4  次のページ


NTTデータ  藤塚 勤也
著者プロフィール
株式会社NTTデータ   藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。

INDEX
第2回:データ構造の比較
はじめに
  MySQLのディレクトリ構造とファイル
  データ量が増えた場合の変化
  MySQL+MyISAMエンジンのテーブルの特徴