MySQL では、
デフォルトのストレージエンジンが MyISAM となっているが、これを InnoDB に変えられるらしい(テーブル単位で)。そして、
InnoDB の方がパフォーマンスがよいらしい??・・・元はといえば、
Open Tech Press | MySQLデータのバックアップ方法の記事を読んだことがきっかけ。ここに興味深い一文がある。
多くのMySQLサイトは、本来のデータベーストランザクションとより優れた書き込みパフォーマンスを得るために、MyISAMテーブルからInnoDBテーブルにデータを移行している。
…といっても、「MyISAM?確かに phpMyAdmin でみると MyISAM ってあったっけ。難しそうだから放置」できた私には、Inno何のことかさっぱりわからなかったのでググってみたところ、確かに書き込みトランザクションがたくさん発生するケースでは InnoDB に変えるメリットはありそう。
…と、いうのは、トランザクションのロックに関して MyISAM はテーブル単位、InnoDB は行(レコード)単位であるというのも影響するのかもしれない。まぁ私はデータベースの専門家でないのでよくわからないのだが、drupal.org サイトで
InnoDB というキーワードで検索すると、確かにいくつかアーティクルは出てきて、
Benefits of Innodb instead of Myisam という投稿(
https://drupal.org/node/103402) によれば、
まずはパフォーマンスの比較をみてみろ、と。
https://www.innodb.com/innodb/benchmarks/
それで、この投稿に対する最後のコメントに、
それじゃ、cache、sessions、watchdog のテーブルを InnoDB に変えてみるかなというのがあったので、私もそうすることにした。以下は SQL 文。こんな感じだろうか(アクセスログを取っている場合は、accesslog も InnoDB にしてみた)。
ALTER TABLE `your_databasename`.`accesslog` ENGINE = innodb;
ALTER TABLE `your_databasename`.`cache` ENGINE = innodb;
ALTER TABLE `your_databasename`.`cache_filter` ENGINE = innodb;
ALTER TABLE `your_databasename`.`cache_menu` ENGINE = innodb;
ALTER TABLE `your_databasename`.`cache_page` ENGINE = innodb;
ALTER TABLE `your_databasename`.`sessions` ENGINE = innodb;
ALTER TABLE `your_databasename`.`watchdog` ENGINE = innodb;
トラックバック URL:
https://perltips.twinkle.cc/trackback/265