Wordpressデータベースが遅い-InnoDBに切り替えるべきですか?


12

1万件を超える投稿があるWordPressサイトを持っていますが、投稿を追加および編集していると、物事が非常に遅くなり始めています。ユーザーのページは、管理者の投稿リストと同様に素晴らしく高速に読み込まれますが、書き込みまたは更新が発生すると、サーバーが100%のCPUになり、時間がかかります(PHPのタイムアウト60秒よりも長い場合があります)。

これはMyISAMのテーブルレベルのロックに関係していると考えており、これをInnoDBに切り替えることを考えています。これを行うことの意味は何ですか?

いくつかの統計:

select  - per hour ~22k
update  - per hour ~7.6k
set option  - per hour ~7k

他にもさまざまな最適化ができることは知っていますが、これが最も大きな影響を与える可能性があると感じています。

ありがとう

編集:速度低下の原因となっている主要な問題の1つを見つけました。毎回「関連性」を再生成しているのはYARPP(Yet Another Related Posts Plugin)でした。これは、2k +タグが原因であるようです。「タグを考慮する」オプションをオフにしたところ、かなり高速になりました。

また、XMLサイトマッププラグインなど、他のものを再生成するプラグインがこの種の問題を引き起こす可能性があります。

ですから、私の差し迫った問題は解決しましたが、Wordpress向けのInnoDBとMyISAMの良い答えを聞きたいと思います!

回答:


11

確かにInnoDBに切り替えます。テーブルロック/行ロックについては、長い間多くの人が議論してきました。私は常にInnoDBを選択します。ただし、InnoDB ... CACHINGを選択するもう1つの大きな理由があります

ほとんどの人はMyISAMの方が読み取りが高速であることを自慢していますが、ほとんどの人はMyISAMの多数のキャッシュ(key_buffer_sizeによって設定される)と呼ばれる、.MYIファイルからのインデックスページのみをキャッシュすることを忘れています。データページをキャッシュすることはありません。32ビットシステムでは公式に最大4GBです。64ビットの場合、最大8GBが最適です。

InnoDBバッファープールは、データとインデックスページをキャッシュします。使用しているサーバーに応じて、データセット全体をRAMにキャッシュできます。InnoDBを最大80%のRAMと10%のDB Conenctionsに調整し、10%をOSに残すことができます。これは、異なるオペレーティングシステムでも同じです

素晴らしい成功を収めているDrupalのお客様にこれらをお勧めします。Wordpressにも同様に適用されます。WordPressを使用するクライアントにDBサポートを提供しました。同じ改善。

InnoDBのメモリは、MyISAMよりも効率的に構成できますパフォーマンスのニーズに合わせてInnoDBを調整する方法は常にあります。データが大きくなるにつれて、最終的には要件なります


6

InnoDBはおそらく役に立たないでしょう-ページ/行レベルのロックは競合を軽減するのに役立ちますが、それがあなたの問題だとは思われません。

平均的なブログのシナリオでは、MyISAMがInnoDBよりも遅いことを示唆するものがたくさんあります(書き込みよりも読み取りの方が多い)。

切り替える前に、少なくとも次のことを行う必要があります

  • mysqltunerを実行して、構成に関するアドバイスを提供します(間違いではありませんし、すべてを知っているわけでもありません)。
  • スロークエリロギングをオンにして、1日ほど放置してから、ログを調べ、何が起こっているかを確認するためにクエリを調べます

個人的な経験から、wp_commentsのインデックス付けされていないフィールドにインデックスを追加すると、私の特定の状況(バースト性のあるコメントの期間、10人ほどが同時にコメントしようとしている可能性がある)で大いに役立つことがわかりました。どのクエリの実行が遅いのか、なぜ問題の理解を深めるのに役立つのか、そして実際の解決策!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.