大規模なWordPressサイトで遅延が発生する理由の1つとして、データベースが最適化されていないことが挙げられます。とは言え、古いサイトの多くが、いまだにデータベースにMyISAMストレージエンジンを使っています。一方でInnoDBではより優れたパフォーマンスと信頼性が期待できます。MyISAMよりもInnoDBが好まれる大きな要因として、完全なテーブルレベルのロックが存在しません。これにより、クエリの処理が速くなります。
- InnoDBとMyISAMの違い
- MyISAMとInnoDBのどちらを使用しているかの確認
- phpMyAdminでのMyISAMからInnoDBへの移行方法
- WP-CLIでの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テーブルが存在しているかどうか確認することもできます。以下の「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;
これとは別に、phpMyAdminで手動で変換することもできます。myISAMテーブルをクリックして、「操作」タブを開き、「ストレージエンジン」のドロップダウンメニューから「InnoDB」を選択してください。
WP-CLIでのMyISAMからInnoDBへの移行方法
WP-CLIは、WordPressに関連するあらゆるタスクの実行に便利な開発者向けコマンドラインツールです。WP-CLIを使ってMyISAMをInnoDBに変換する方法はこちらの記事が参考になります。