WordPressを使ってるとありがちなMySQLのオーバーヘッドを解消する

寒くなってきましたが、皆さんいかがお過ごしでしょうか。
気温も寒いですが、飲み会が多くなり財布も寒くなってまいりました。

今日はオーバーヘッドの話です。
MySQLではInsertやDeleteの繰り返しやらキャッシュやらで、オーバーヘッドという無駄な領域ができてしまいます。
WordPressを始め、データベースを酷使するようなソフトではよくできてしまい、その分MySQLの応答が遅くなり・・・という悪循環に陥ってしまいます。

定期的に解決すれば十分な予防ができますので、取り返しが付かなくなる前にお試し下さい。 


前準備

WP-DBManagerのプラグインを入れておきます。

ovh01.png

オーバーヘッドの確認方法

WP-DBManagerからは、Database画面のTables InformationにあるOverhead列で確認できます。

ovh02.png

ちょっと見にくいですが、「wp_options」で204byteのオーバーヘッドが発生しているのが確認できます。

SQLが自由に使えるなら、「show tables status;」を投げた結果の「data free」の項目がオーバーヘッドになります。

*************************** 5. row ***************************
Name: wp_options
Engine: MyISAM
Version: 10
Row_format: Dynamic
Rows: 395
Avg_row_length: 2266
Data_length: 895636
Max_data_length: 281474976710655
Index_length: 21504
Data_free: 204
Auto_increment: 5899
Create_time: 2012-06-16 23:41:41
Update_time: 2012-11-23 18:39:15
Check_time: 2012-11-23 17:16:12
Collation: utf8_general_ci
Checksum: NULL
Create_options:
Comment:

¥Gをクエリの最後につけるとこんな感じに結果が見られます。

解消させよう

WP-DBManagerからなら、Optimize DBから最適化できます。

ovh03.png

必要なのだけにYesにしてもいいですし、全部Yesにしても良いです。
選んだらOptimizeで最適化されます。 

ついでにRepair DBから修復もかけておきましょう。

mysqlcheckコマンドが使えるなら、「mysqlcheck -o -r (データベース名) -u(ユーザー名) -p」で最適化と修復ができます。

$ mysqlcheck -o -r DB -uuser -p
Enter password:
DB.wp_commentmeta OK
DB.wp_comments OK
DB.wp_links OK
DB.wp_nginxchampuru OK
DB.wp_options OK
DB.wp_popularpostsdata OK
DB.wp_popularpostsdatacache OK
DB.wp_postmeta OK
DB.wp_posts OK
DB.wp_term_relationships OK
DB.wp_term_taxonomy OK
DB.wp_terms OK
DB.wp_tweet_urls OK
DB.wp_usermeta OK
DB.wp_users OK

その後、オーバーヘッドが解消されているのを念のため確認しておきます。

ovh04.png

定期的に実行する

忘れないように、定期的に実行するようにしておきます。

WP-DBManagerのDB Optionsにある、Automatic Optimizing of DBとAutomatic Repairing of DBから設定できます。

ovh05.png

間隔が短くてもいいかもしれません。

他にも、mysqlcheckコマンドをcronに登録しておくという手もあります。

おわり

塵も積もれば山となるという言葉もありますし、時間も負荷もかかるものではないので、とりあえず設定してみてはいかがでしょうか。
特に、最近重くなってきたなーという方は、プラグインいじったりする前に見直してみて、解消するのも一つの手です。 

参考

MySQLのメンテナンス | brokendish

コメントを残す