前回の続きです。
WordPress をインストールする(されている)のと同じサーバ上で
MySQL Proxyをインストール後、すでに起動させている前提です。
そこまでの手順は前回を参照。
残りの手順としては、接続先のデータベース情報をMySQL Proxyに変更してあげるだけです。
新規インストールの場合は、データベースのホスト名を127.0.0.1に変更します。
(”この値は 99% 変える必要はないでしょう。”っていう記述はどうかと思いますね。)
あとはそのままいつものステップでインストールするだけです。
すでにインストールされている場合は、wp-config.phpを直接編集するので、
ファイルのバックアップをとっておきましょう。
/** WordPress のデータベース名 */ define('DB_NAME', 'putyourdbnamehere'); /** MySQL のユーザー名 */ define('DB_USER', 'usernamehere'); /** MySQL のパスワード */ define('DB_PASSWORD', 'yourpasswordhere'); /** MySQL のホスト名 (ほとんどの場合変更する必要はありません。) */ define('DB_HOST', '127.0.0.1'); /** データベーステーブルのキャラクターセット (ほとんどの場合変更する必要はありません。) */ define('DB_CHARSET', 'utf8'); /** データベースの照合順序 (ほとんどの場合変更する必要はありません。) */ define('DB_COLLATE', '');
”MySQL のホスト名”が 自分の普段使っているホスト名になっているはずなので、
それを127.0.0.1に変更します。
これで、WordPressのデータベース接続がMySQL Proxy経由に変更になります。
次に、proxy-lua-scriptで、histogram.lua を使用しているので、その使い方について。
まずはターミナルなどから、サーバーにログインして、mysqlにつなぎます。
(残念ながら、さくらから提供されているphpMyadminからは接続できないですね。)
ふつうはこんな感じ。
user% mysql -u$USER -hmysqlXXX.db.sakura.ne.jp -p password:
MySQL Proxy経由でつなぐ場合は、ホスト名の部分を以下に変更。
user% mysql -u$USER -h127.0.0.1 -p password:
特になんの変化も見られないと思います。
単純にproxyを経由して、いつものmysqlにつながっているだけです。
histogram.lua を使用すると、各テーブルへの読み書き回数と、
クエリの実行回数、実行時間の統計が取れます。
mysql> SELECT * FROM histogram.TABLES; +------------------------------+--------+--------+ | TABLE | reads | writes | +------------------------------+--------+--------+ | .wp_term_taxonomy | 1733 | 203 | | .wp_usermeta | 881 | 10 | | .wp_users | 578 | 0 | | .wp_term_relationships | 1496 | 29 | | .wp_posts | 3366 | 164 | | .wp_postmeta | 2489 | 665 | | .wp_ak_twitter | 3 | 2 | | .wp_comments | 255 | 0 | | .wp_terms | 1518 | 3 | | .wp_options | 134026 | 328 | +------------------------------+--------+--------+ mysql> SELECT * FROM histogram.queries¥G *************************** 1. row *************************** query: SELECT `t` . * , `tt` . * , `tr` . `object_id` FROM `wp_terms` AS `t` INNER JOIN `wp_term_taxonomy` AS `tt` ON `tt` . `term_id` = `t` . `term_id` INNER JOIN `wp_term_relationships` AS `tr` ON `tr` . `term_taxonomy_id` = `tt` . `term_taxonomy_id` WHERE `tt` . `taxonomy` IN ( ? , ? ) AND `tr` . `object_id` IN ( ? , ? , ? , ? , ? ) ORDER BY `t` . `name` ASC count: 59 max_query_time: 33291 avg_query_time: 8021 *************************** 2. row *************************** query: SELECT `term_id` , `taxonomy` FROM `wp_term_taxonomy` WHERE `term_taxonomy_id` IN ( ? , ? , ? , ? ) count: 32 max_query_time: 7779 avg_query_time: 4655.4375
上記は例なので、実際はもっとどっさり取れます。
query_time の単位は マイクロ秒です。
select 文はluaスクリプトで解析するための疑似的なクエリですので、
これにwhere 句をつけたり、order byしたりっていうのは出来ないです。
自分で改造して、やりましょう。
以上で、WordPressが裏でどんなクエリを、
どのくらいの頻度で発行してるかがわかります。
とても簡単なので、興味がある人は是非お試し下さい。
