大規模なWordPressサイトで遅延が発生する理由の1つとして、データベースが最適化されていないことが挙げられます。とは言え、古いサイトの多くが、いまだにデータベースにMyISAMストレージエンジンを使っています。一方でInnoDBではより優れたパフォーマンスと信頼性が期待できます。MyISAMよりもInnoDBが好まれる大きな要因として、完全なテーブルレベルのロックが存在しません。これにより、クエリの処理が速くなります。

InnoDBとMyISAMの違い

InnoDBとMyISAMの主な違いをいくつかご紹介します。

  • InnoDBでは行レベルのロックが採用されている
  • InnoDBには参照整合性があり、外部キーと関係制約をサポートしている(RDBMS)が、MyISAMはサポートしていない(DMBS)
  • InnoDBはトランザクションをサポートしており、コミットやロールバックが可能
  • InnoDBはトランザクションログを使用した自動リカバリを行うため、より信頼性が高い

MyISAMとInnoDBのどちらを使用しているか確認する方法

新しいWordPressサイトであれば、すでにInnoDB MySQLのストレージエンジンを使用している可能性が高いです。一方で、古いWordPressサイトでは、簡単なチェックを行うことをお勧めします。サイトによっては、MyISAMテーブルとInnoDBテーブルが混在している場合もあり、これを整えることで性能の改善が見られる可能性があります。 以下の簡単な手順で確認可能です。

ステップ1

phpMyAdminにログインしMySQLデータベースをクリックします。

ステップ2

「Type」カラムをクイックスキャンまたはソートすると、テーブルがどのストレージエンジンタイプを使っているかがわかります。以下の例では、2つのテーブルがまだMyISAMを使用していることが確認できます。

MyISAMテーブルの表示
MyISAMテーブルの表示

別の方法として、クエリを実行してMyISAMテーブルが存在しているかどうか確認することもできます。以下の「database」を実際の名前に置き換えてください。

SELECT TABLE_NAME,
 ENGINE
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'database' and ENGINE = 'myISAM'

phpMyAdminでのMyISAMからInnoDBへの移行方法

MyISAMからInnoDBへの移行はとても簡単です。以下の例は、wp_commentsテーブルを使用しています。ALTERコマンドを実行するだけで、InnoDBストレージエンジンに変換できます。MySQLデータベースに対して何らかの操作を行う前に、必ずバックアップを取ることをお勧めします。

ALTER TABLE wp_comments ENGINE=InnoDB;
実行前に必ずMySQL 5.6.4以上を実行していることを確認してください。InnoDBでフルテキストインデックスがサポートされていない状況が発生する可能性があります。なお、Kinstaをご利用であれば、この問題が発生することはなく特別な対処は必要ありません。

これとは別に、phpMyAdminで手動で変換することもできます。myISAMテーブルをクリックして、「操作」タブを開き、「ストレージエンジン」のドロップダウンメニューから「InnoDB」を選択してください。

MyISAMをInnoDBに切り替える
MyISAMをInnoDBに切り替える

WP-CLIでのMyISAMからInnoDBへの移行方法

WP-CLIは、WordPressに関連するあらゆるタスクの実行に便利な開発者向けコマンドラインツールです。WP-CLIを使ってMyISAMをInnoDBに変換する方法はこちらの記事が参考になります。