Drupal で、データベースを最適化する(InnoDB)

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
Posted on 2007-11-04 by yas |