[InterDB] [著者HP] [PREVIOUS][UP][NEXT]

Copyright @ 2009, Suzuki Hironobu @ InterDB


■2-06■ データベースディレクトリの構造

データベースシステムのデータ本体(ファイル群)は、データベースシステムの初期化時(mysql_init_dbコマンド実行時)に作成されるディレクトリ以下に保管されます。このディレクトリを`データベースディレクトリ'といいます。

以下、MySQLでのデータベースディレクトリとデータベースの関係、およびMyISAM型とInnoDB型のテーブルの保管方法について説明します。

データベースディレクトリとデータベース

ディレクトリの初期状態

データベースディレクトリ以下の(ディレクトリの)初期状態を示します(【図.2-14】参照)。

図.2-14 データベースディレクトリ以下のディレクトリ構造
datadir(データベースディレクトリ):
        /usr/local/mysql/var (本書のデフォルトのデータベースディレクトリ)
                            mysql/	データベースシステム管理用のテーブルが保管されているデータベース
                            test/	テスト用のデータベース。全てのデータベースユーザがテーブル作成、データの書き込みなど可能。

データベース

(CREATE DATABASE文で)データベースを作成すると、データベースディレクトリ下にデータベース名のサブディレクトリが作成されます。

例として、データベース`sampledb'を作成します。

mysql> CREATE DATABASE sampledb;
Query OK, 1 row affected (0.26 sec)

これにより、データベースディレクトリ`/usr/local/mysql/var'以下に`sampledb'というデータベース名と同じ名前のサブディレクトリが作成されます。

mysql$ ls -d  /usr/local/mysql/var/sampledb
/usr/local/mysql/var/sampledb

MyISAM型

MyISAM型テーブルはテーブル毎に3つのファイルによって保管されます。これら3つのファイルは、そのテーブルの属するデータベースのディレクトリ以下に置かれます。


MyISAM型テーブルの保管に必要なファイル
ファイル説明
`テーブル名'.frmテーブル定義が記述されたファイル
`テーブル名'.MYIインデックスを保存するファイル(MYIndex)
`テーブル名'.MYDデータを保存するファイル(MYData)

例えば、データベースsampledbにテーブルcustomerlistを作成すると、ディレクトリ`/usr/local/mysql/var/sampledb'以下に次の3つのファイルが作成されます(補足 1)。

mysql$ ls /usr/local/mysql/var/sampledb/customerlist.*
/usr/local/mysql/var/sampledb/customerlist.MYD
/usr/local/mysql/var/sampledb/customerlist.MYI
/usr/local/mysql/var/sampledb/customerlist.frm

InnoDB型

InnoDB型テーブルは、テーブル毎にテーブル定義ファイル`*.frm'、および全InnoDB型テーブルで共有するデータファイルと(トランザクション)ログファイルによって保管されます。

テーブル定義ファイル

テーブル定義ファイルは(MyISAM型と同様)そのテーブルの属するデータベースのディレクトリ以下に置かれます。

データ ファイル

InnoDB型テーブルのデータは全InnoDB型テーブル共通で保存されます(補足 2)。保管場所やデータファイルのファイル名は、次のシステム変数で設定します(【表.2-4】参照)。

表.2-4 InnoDB型のデータファイルに関するシステム変数
システム変数説明
innodb_data_home_dirデータファイルを保管するディレクトリ
innodb_data_home_pathデータファイル名とサイズを列挙する

(トランザクション)ログファイル

InnoDB型の(トランザクション)ログファイルには、データファイルが破壊された場合のリカバリのため、トランザクションログを記録します(【表.2-5】参照)。

表.2-5 InnoDB型の(トランザクション)ログファイルに関するシステム変数
システム変数説明
innodb_log_group_home_dirログファイルをおくディレクトリ名を設定。ログファイル名は`iba_logfileN'(Nは整数)
innodb_log_file_sizeログファイルのサイズ。単位は[Mbyte]
innodb_log_files_in_groupログファイルの数
InnoDB型の仕組みは2-08に解説しているので参照してください。


補足


(1)
データファイル`.MYD'とインデックスファイル`.MYI'は、テーブル作成時(CREATE TABLE文実行時)のオプション指定(DATA/INDEX DIRECTORY=dir)によって、任意のディレクトリにおくことができます。

(2)
バージョン4.1.1から、テーブル毎にデータファイルを持つことが可能となりました。詳細は次に示すオンラインドキュメントのオプション`innodb_file_per_table'を参照してください。

http://dev.mysql.com/doc/mysql/ja/InnoDB_start.html


[PREVIOUS][UP][NEXT]