mysql_explain_log
1) 一般ログの全てのSELECTとUPDATE文の抽出
2) MySQLに接続した上で、1)で抽出したSQL文をEXPLAINで実行する。
この時UPDATE文は同等の検索処理を行うSELECT文に変換。
3) EXPLAINの実行結果を要約し、牽引検索の回数や全表検索になったSQL文
などを表示する。
mysql_explain_logを試そうと思いましたが、MYSQL5.1からインストールされないようなので
MYSQL5.0xxをダウンロードしてコピーして利用してみました。
mysql_explain_log (a third-party program) is no longer included in MySQL distributions.
mysql-5.0.83-linux-i686-icc-glibc23.tar.gz
[root@colinux bin]# pwd
/usr/local/src/mysql-5.0.83-linux-i686-icc-glibc23/bin
[root@colinux bin]# cp -p mysql_explain_log /usr/local/mysql/bin/
[root@colinux bin]#
my.cnfにlog=の設定が無かったので、まず最初に設定を入れて再起動した後に
幾つかコマンドを実行してみました。
DBDやDBIが無かった….. まずインストールしないと利用出来ないのでインストールしました。
1) DBIをyumでインストール
[root@colinux src]# yum -y install perl-DBI
fedora 100% |=========================| 2.1 kB 00:00
updates 100% |=========================| 2.3 kB 00:00
2) DBDをyumでインストール
[root@colinux DBD-mysql-4.011]# yum install perl-DBD-MySQL
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
さて実行しようと思いましたが、以下のエラーが出たので
[root@colinux data]# mysql_explain_log /usr/local/mysql/data/mysql-general.log
explain_log provided by http://www.mobile.de
=========== ================================
Error: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2)
ユーザー、パスワード、socketの場所を変更して再実行しました。
vi /usr/local/mysql/bin/mysql_explain_log
$Param->{host}=”;
$Param->{user}=’root’;
$Param->{password}=’password’;
$Param->{PrintError}=0;
$Param->{socket}=’/tmp/mysql5.1.sock’;
以下のような結果が表示されました。
[root@colinux data]# mysql_explain_log /usr/local/mysql/data/mysql-general.log