MySQLのストレージエンジンの設定
MySQLの特徴のひとつとして複数のストレージエンジンから目的に応じて 必要なものを選択して使用することがあげられます。
また、テーブルごとにストレージエンジンを指定できるという特徴は 他のリレーショナルデータベースにはないMySQL独自のものとなっています。
MySQLのストレージエンジンはデフォルトでは「MyISAM」という形式の高速なストレージエンジンが使用されます。
トランザクション処理を行いたい場合には「InnoDB」というストレージエンジンを指定する必要があります。
ストレージエンジンの種類
MySQLのストレージエンジンの主なものには下記の形式があります。
InnoDB --- トランザクションに対応しているストレージエンジン。MyISAMより速度は遅い。
Falcon --- トランザクションに対応している新しいストレージエンジン。
ISAM --- MyISAMの元の古い形でMySQL5.0以降のバージョンではデフォルトでインストールされない。
MERGE --- MyISAMの複数のテーブルを1つにまとめて使用する。
MEMORY --- 全てのデータをメモリ上で保管するため動作が高速。
InnoDBを使用するための「my.cnf」の設定
トランザクションを使用する場合は「InnoDB」を使用するようにMySQLの環境設定ファイルの 「my.cnf」を設定する必要があります。「my.cnf」はXAMPPをインストールしたディレクトリの「xampp\mysql\bin」フォルダ内にあります。
XAMPPのMySQLの「my.cnf」は下記のようにデフォルトで「InnoDB」が使用できるように設定されています。
# Comment the following if you are using InnoDB tables #skip-innodb innodb_data_home_dir = "C:/xampp/mysql/" innodb_data_file_path = ibdata1:10M:autoextend innodb_log_group_home_dir = "C:/xampp/mysql/" #innodb_log_arch_dir = "C:/xampp/mysql/" ## You can set .._buffer_pool_size up to 50 - 80 % ## of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 16M innodb_additional_mem_pool_size = 2M ## Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 5M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50「my.cnf」が上のようになっていない場合は次のように編集します。
「skip-innodb」の行の頭に「#」をつけてコメント行にします。
「innodb_xxxx」の行の頭の「#」を外します。
テーブルが使用しているストレージエンジンを確認する
テーブルが使用しているストレージエンジンを確認する場合は次のように「show」コマンドを使用します。show create table テーブル名
mysql> show create table tab1; -------------------------------+ | Table | Create Table | tab1 | CREATE TABLE `tab1` ( `number` int(10) NOT NULL, `name` char(40) NOT NULL, `note` char(60) DEFAULT NULL, UNIQUE KEY `number` (`number`) ) ENGINE=MyISAM DEFAULT CHARSET=sjis | +-------+------------------------------ 1 row in set (0.02 sec)
「ENGINE=」に続いて表示される部分で確認できます。
上の例ではテーブル「tab1」は「MyISAM 」がストレージエンジンです。
テーブルが使用しているストレージエンジンを変更する
テーブルが使用しているストレージエンジンを変更する場合は次のように「alter」コマンドを使用します。alter table テーブル名 engine=ストレージエンジン名
mysql> alter table tab1 engine=InnoDB; Query OK, 9 rows affected (0.27 sec) Records: 9 Duplicates: 0 Warnings: 0 mysql> show create table tab1; +-------+------------------------------- | Table | Create Table +-------+------------------------------- | tab1 | CREATE TABLE `tab1` ( `number` int(10) NOT NULL, `name` char(40) NOT NULL, `note` char(60) DEFAULT NULL, UNIQUE KEY `number` (`number`) ) ENGINE=InnoDB DEFAULT CHARSET=sjis | +-------+------------------------------- 1 row in set (0.01 sec)上の例ではテーブル「tab1」のストレージエンジンが「InnoDB 」に変更されています。
XAMPP関連の記事一覧