ようこそゲストさん

Digiclo Online Memo

Movable Typeの再構築を僅かでも高速化する手順

はてブ情報 はてブに登録 はてブ数 2009/10/05 8:25 MovableTypeDigiclo
現在利用している共有レンタルサーバのうち、MySQLでストレージエンジンにInnoDBが利用可能なものがあったので実証実験としてMyISAM から InnoDBへと変更。
というわけで、次の作業は「ストレージエンジンをMyISAMからInnoDBに変更する」を実施して計測します。シックス・アパートのエンジニアが以前試験したところ、MyISAMよりもInnoDBの方がパフォーマンスがいいという結果を聞いていたので、ワクワクしながら、次のコマンドを実行してInnoDBに変更していきます。
techknow.yagishita.net - MTを使ったサイト構築テクニック (2): ネタフルにおける再構築チューニング
ということと
phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する具体的な方法です。ここでは XAMPP 環境(Windows XP + MySQL 5.0 + phpMyAdmin 2.11.4)で試したもので紹介します。
phpMyAdmin で MySQL のストレージエンジンを MyISAM から InnoDB に変更する方法
とxampp上での実証は小粋空間の荒木さんに先を越されたので
共有のレンタルサーバではどうなのかと言うことで人柱になってみた。
  • coreserverの管理画面より、データベースを選択し、該当のMTのDBへphpMyAdminで接続する。*1
  • 該当DBを選択し、SQLメニューより以下のコマンドをコピーし貼り付けて実行
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;

*2

以上でストレージエンジンの変更は完了

あらかじめ、バックアップを取ってあったMyISAMのもので別に設置したMTOSと2個を用い、同時に全面再構築を10回ずつ行ってみた。
エントリー数は適当にいくつかの自ブログからインポートしたもので100件ほど。

MyISAMに対して、InnoDBの方は最大で約20%程度速度が向上していた。*3

ストレージエンジンが選択可能であれば若干ながら有効である事を実証できた。
サーバのマシンパワーが潤沢であり、MTのパブリッシングに占有可能であるならば、my.cnfへのパラメータ設定によるチューニング込みで大量のページを処理する場合には採用を検討したい。

*1 : ホスト登録をしてsshにてコマンドライン作業でも可

*2 : 必ずしも改行する必要は無い

*3 : さすがにmy.cnfなどは触れないし、マシンパワー依存のInnoDBでは共有サーバでは他の人の迷惑になるので速攻削除した


名前:  非公開コメント   

E-Mail(任意/非公開):
URL(任意):
  • TB-URL(確認後に公開)  http://adiary.dcw-jp.com/028/tb/