TOPサーバ構築・運用> はじめに
徹底比較!! MySQLエンジン
徹底比較!! 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)。

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

INDEX
第2回:MyISAMとInnoDB
はじめに
  MyISAMテーブルの特長
  InnoDBテーブルの特徴