■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つのファイルは、そのテーブルの属するデータベースのディレクトリ以下に置かれます。
例えば、データベース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】参照)。
(トランザクション)ログファイルInnoDB型の(トランザクション)ログファイルには、データファイルが破壊された場合のリカバリのため、トランザクションログを記録します(【表.2-5】参照)。
補足(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] |