TopMySQL > phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する方法
2009年10月 3日

phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する方法

Posted at October 3,2009 2:55 AM
Category:[MySQL]
Tag:[, , , ]

phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する具体的な方法です。ここでは XAMPP 環境(Windows XP + MySQL 5.0 + phpMyAdmin 2.11.4)で試したもので紹介します。

このエントリーは以下の記事に触発されて書いたものです。

techknow.yagishita.net - MTを使ったサイト構築テクニック (2): ネタフルにおける再構築チューニング

1.my.cnf を変更する

ストレージエンジンを MyISAM から InnoDB に変更するには、テーブル単位で変更します。phpMyAdmin の GUI によるストレージエンジンの変更方法は、

  • 変更したいテーブル名をクリック
  • 上部タブの「操作」をクリック
  • 「テーブルオプション」の「ストレージエンジン」から「InnoDB」を選択

となりますが、XAMPP のデフォルトの MySQL の設定では、phpMyAdmin から InnoDB を選択することができません。

ストレージエンジン選択

したがって、まず最初に、C:¥xampp¥mysql¥bin¥my.cnf(my と表示されたファイル)を編集します。

my.cnf を任意のエディタで開き、

# 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

の部分を探し、以下のように「skip-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

編集が終わったら保存します。

2.MySQL を再起動する

my.cnf を編集しただけでは実際の動作に反映されないので、XAMPP コントロールパネルを使って MySQL を再起動します。

MySQL を再起動

3.ストレージエンジンを MyISAM から InnoDB に変更する

phpMyAdmin で該当のDBを選択したあと、InnoDB に変更したいテーブルをクリック。

変更したいテーブルをクリック

上部のタブから「操作」をクリック。

「操作」をクリック

「テーブルオプション」の「ストレージエンジン」から「InnoDB」を選択

ストレージエンジン選択

または、テーブル選択前の状態の上部タブの「SQL」をクリックして、以下のSQL を実行します(まとめて実行するとエラーになりましたが...)。この SQL は Movable Type 4.261 のものです。

ALTER TABLE `mt_asset`  ENGINE = 'InnoDB';
ALTER TABLE `mt_asset_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_association`  ENGINE = InnoDB;
ALTER TABLE `mt_as_ua_cache`  ENGINE = InnoDB;
ALTER TABLE `mt_author`  ENGINE = InnoDB;
ALTER TABLE `mt_author_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_backgroundrebuild`  ENGINE = InnoDB;
ALTER TABLE `mt_blog`  ENGINE = InnoDB;
ALTER TABLE `mt_blog_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_category`  ENGINE = InnoDB;
ALTER TABLE `mt_category_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_comment`  ENGINE = InnoDB;
ALTER TABLE `mt_comment_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_config`  ENGINE = InnoDB;
ALTER TABLE `mt_entry`  ENGINE = InnoDB;
ALTER TABLE `mt_entry_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_field`  ENGINE = InnoDB;
ALTER TABLE `mt_fileinfo`  ENGINE = InnoDB;
ALTER TABLE `mt_ipbanlist`  ENGINE = InnoDB;
ALTER TABLE `mt_log`  ENGINE = InnoDB;
ALTER TABLE `mt_notification`  ENGINE = InnoDB;
ALTER TABLE `mt_objectasset`  ENGINE = InnoDB;
ALTER TABLE `mt_objectscore`  ENGINE = InnoDB;
ALTER TABLE `mt_objecttag`  ENGINE = InnoDB;
ALTER TABLE `mt_permission`  ENGINE = InnoDB;
ALTER TABLE `mt_placement`  ENGINE = InnoDB;
ALTER TABLE `mt_plugindata`  ENGINE = InnoDB;
ALTER TABLE `mt_profileevent`  ENGINE = InnoDB;
ALTER TABLE `mt_profileevent_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_role`  ENGINE = InnoDB;
ALTER TABLE `mt_session`  ENGINE = InnoDB;
ALTER TABLE `mt_tag`  ENGINE = InnoDB;
ALTER TABLE `mt_tbping`  ENGINE = InnoDB;
ALTER TABLE `mt_tbping_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_template`  ENGINE = InnoDB;
ALTER TABLE `mt_templatemap`  ENGINE = InnoDB;
ALTER TABLE `mt_template_meta`  ENGINE = InnoDB;
ALTER TABLE `mt_touch`  ENGINE = InnoDB;
ALTER TABLE `mt_trackback`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_error`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_exitstatus`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_funcmap`  ENGINE = InnoDB;
ALTER TABLE `mt_ts_job`  ENGINE = InnoDB;

なお、すべてのテーブルを InnoDB にする必要はないかもしれませんが「混在しない方が良い」と言う記事もあります。

漢(オトコ)のコンピュータ道 - MyISAMからInnoDBへ切り替えるときの注意点

4.MyISAM と InnoDB の計測結果

Movable Type 4.261 の MyISAM と InnoDB の再構築時間の計測結果です。

ブログ記事数は約30で、ブログ記事の再構築と全体の再構築をそれぞれ5回ずつ行いました。ちなみにかなり非力な Windows マシンです(Pentium4 2.8GHz メモリ1.5GB)。InnoDB のチューニングは行なっていません。

MyISAMInnoDB
ブログ記事15s13s14s16s13s13s12s12s11s12s
全体53s51s48s52s55s43s41s43s42s39s

ということで、若干 InnoDB の方が早くなりました。

Posted by yujiro   このページの先頭に戻る
関連記事
    この記事を読んだ人はこんな記事も読んでいます
    人気エントリー
    Hatena Hot Entries
    Hatena Entries
    トラックバックURL


    トラックバック

    再構築を僅かでも高速化する手順 from Digiclo Online Memo
    現在利用している共有レンタルサーバのうち、MySQLでストレージエンジンにInnoDBが利用可能なものがあったので実証実験としてMyISAM から Inn... [続きを読む]

    Tracked on October 5, 2009 8:25 AM
    コメント

    おお、キャッチアップが早い。InnoDB関連のパラメータを変更すると、変わりますよ。はい。

    [1] Posted by yagishita : October 3, 2009 9:10 PM

    >yagishitaさん
    こんばんは。
    元記事、勉強になります。ありがとうございます。
    パラメータは色々試してみたいと思います。
    ではでは!

    [2] Posted by yujiro logo : October 4, 2009 1:09 AM
    コメントする
    greeting

    *必須

    *必須(非表示)


    ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

    太字 イタリック アンダーライン ハイパーリンク 引用
    [サインインしない場合はここにCAPTCHAを表示します]

    コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

    コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)

    Now loading...
    Introduction
    Entry Trackbacks
    再構築を僅かでも高速化する手順
     [Digiclo Online Memo] 10/05 08:25
    Entries of this Category
    Recent Entries
    Recent Comments
    Recent Trackbacks
    QRcode

    現在停止中です
    携帯電話からこのQRcodeを撮影することで携帯用URLを取得することができます

    URI for cellular phones
    ギターに入った猫
    Styles
    Font Size
    Default
    For defective color vision
    Gray Scale
    RGB Color
    Search this site

    このブログをメールで購読する by:FeedBurner

    loading ...
    Categories
    Monthly Archives
    BlogPeople
    Syndicate this site
    FeedBurner(RSS1.0/RSS2.0/Atom)
    Counter
    これまでのアクセス
    クリエイティブ・コモンズ・ライセンス
    Powered by
    Movable Type 5.12