 |

|
徹底比較!! MySQLエンジン |
第2回:MyISAMとInnoDB
著者:NTTデータ 藤塚 勤也 2006/8/14
|
|
|
前のページ 1 2 3 次のページ
|
 |
MyISAMテーブルの特長
|
MyISAMテーブルには固定長構造、可変長構造、圧縮テーブルの3種類のデータ構造があります。前者の2つはレコードデータのサイズの取り扱い方法で、MySQLが自動で選択します。
なお、データ構造は「show table status」コマンドで確認できます。次の例では「TEST00」テーブルが固定長レコードの構造(Row_format: Fixed)でできていることがわかります。
mysql> show table status \G;
******** 1. row ***************************
Name: TEST00
Engine: MyISAM
Version: 10
Row_format: Fixed
Rows: 0
Avg_row_length: 0
Data_length: 0
Max_data_length: 41658296553177087
Index_length: 1024
Data_free: 0
Auto_increment: NULL
Create_time: 2006-07-12 15:09:18
Update_time: 2006-07-12 15:09:18
Check_time: NULL
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
|
固定長構造
|
固定長構造は、テーブルを構成するカラムのデータ型にVARCHAR、TEXT、BLOBを含んでいない場合に選択されます。固定長構造の最大の利点は、レコードの削除が行われた時に削除されたデータ領域の再利用が容易なことです。
よって、固定長構造のテーブルファイルは再利用できないデータ領域が残ってしまう「データのフラグメンテーション」が発生しない特長を持っています。
データのフラグメンテーションとは、利用できない無駄なデータ領域が虫食いのように残ってしまうことをいいます。また固定長構造のテーブルには、レコードデータに「row number」と呼ぶレコードを一意に識別する値が付けられ、MySQLはこの値を利用して高速に該当レコードを探し当てる仕組みを持っています。
|
可変長構造
|
もう一方の可変長構造は、テーブルを構成するカラムのデータ型にVARCHAR、TEXT、BLOBを含んでいる場合に選択されます。可変長構造のテーブルファイルは固定長構造と異なり、レコードを削除した場合のデータ領域の再利用が難しいため、データのフラグメンテーションが発生する可能性を持っています。
データのフラグメンテーションが発生するとディスクの利用効率が低下するため、検索性能が劣化してしまいます。そのため可変長構造のテーブルの場合は、一定周期でこのデータのフラグメンテーションを取り除く処理を実施する必要があります。
|
圧縮テーブル
|
3つ目の構造は、圧縮テーブルと呼ぶ読み取り専用のものです。この構造は自動で選択されるものではなく、オプションユーティリティ(myisampack)を用いてユーザが作成するものです。固定長構造/可変長構造ともに、圧縮テーブル構造に変更することが可能です。
|
InnoDBのディレクトリ構造とファイル
|
テーブルを作成する際にInnoDBを選択すると、データベース名のサブディレクトリ内には、「テーブル名.frm」ファイルのみが作成されます。InnoDBのテーブルのレコードデータやインデックスデータは、テーブルスペースと呼ばれるファイル内に格納するためです。
テーブルスペースとは、標準ではデータベースディレクトリ内に「ibdata1」という名称で作成されるファイルのことです。このテーブルスペースは、コンフィグレーションの変更により、その場所やサイズを指定することができます。なおテーブル構造のデータは、テーブル名.frmファイル内だけでなく、テーブルスペース内にも格納されます。
次に示すは、「InnoDB_TEST」データベース内に「TEST00」という名前のInnoDBテーブルを作成した時のファイル一覧です。「InnoDB_TEST」ディレクトリ内に「TEST00.frm」ファイルのみが存在していることがわかると思います。
[root@localhost var]# ls InnoDB_TEST/
TEST00.frm
|
前のページ 1 2 3 次のページ
|

|
|

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