 |

|
徹底比較!! MySQLエンジン |
第2回:MyISAMとInnoDB
著者:NTTデータ 藤塚 勤也 2006/8/14
|
|
|
1 2 3 次のページ
|
 |
はじめに
|
今回は、MySQLのストレージエンジンの中でも特に有名な「MyISAM」と「InnoDB」の2つを取り上げます。MyISAMはMySQLのデフォルトストレージエンジンで、ストレージエンジンを指定せずにテーブルを作成するとMyISAMが選択されます。もう一方のInnoDBエンジンは、MySQLに豊富なトランザクション機能を提供するストレージエンジンとして有名です。
まずはそれぞれのテーブルファイルの構造について解説し、最後にInnoDBのトランザクションについて解説します。
|
MySQLのディレクトリ構造
|
各ストレージエンジンのファイル構造を説明する前に、前知識としてMySQLのディレクトリ構造について説明します。
MySQLのデータベースディレクトリには、バイナリログと呼ぶデータベースの更新情報を格納するファイルと、2つのサブディレクトリが存在します(図1)。

図1:MySQLデータベースディレクトリ
「mysql」ディレクトリには権限テーブルと呼ばれるMySQLが使用するテーブル群を格納し、「test」ディレクトリは権限テーブルを初期化する際に作成されるデータベースのディレクトリです。ユーザが新たなデータベースの作成を行うと、MySQLはそのデータベース名のサブディレクトリをデータベースディレクトリ内に作成します。
この構造は、使用するストレージエンジンに関係なく共通です。
|
MyISAMのテーブルファイル
|
テーブルを作成する際にMyISAMを選択すると、データベース名のサブディレクトリ内に、「テーブル名.frm」「テーブル名.MYD」「テーブル名.MYI」の3つのファイルが作成されます。
- テーブル名.frmファイル
- どのようなカラム構成にてできているかなどのテーブル構造のデータが格納されます。
- テーブル名.MYDファイル
- テーブルのレコードデータが格納されます。
- テーブル名.MYIファイル:
- そのテーブルに対して作成された複数のインデックスデータとテーブルの統計情報が格納されます。
表1:テーブルファイルの役割
次に示すは「MyISAM_TEST」データベース内に「TEST00」という名前のMyISAMテーブルを作成した時のファイル一覧です。「MyISAM_TEST」ディレクトリ内に「TEST00.frm」「TEST00.MYD」「TEST00.MYI」の3つのファイルが存在していることがわかると思います。
[root@localhost var]# ls MyISAM_TEST/
TEST00.MYD TEST00.MYI TEST00.frm
|
1 2 3 次のページ
|

|
|

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