データベース/MySQL、PostgreSQL、SQLite

MySQLのストレージエンジンの設定

MySQLのストレージエンジンについて解説します。

執筆者:堀江 美彦

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関連の記事一覧
【編集部おすすめの購入サイト】
楽天市場でデータベース関連の書籍を見るAmazon でデータベース関連の書籍を見る
※記事内容は執筆時点のものです。最新の内容をご確認ください。
※OSやアプリ、ソフトのバージョンによっては画面表示、操作方法が異なる可能性があります。

あわせて読みたい

あなたにオススメ

    表示について

    カテゴリー一覧

    All Aboutサービス・メディア

    All About公式SNS
    日々の生活や仕事を楽しむための情報を毎日お届けします。
    公式SNS一覧
    © All About, Inc. All rights reserved. 掲載の記事・写真・イラストなど、すべてのコンテンツの無断複写・転載・公衆送信等を禁じます