-MySQLのパフォーマンスチューニングについてまとめ

#contents

*参考本・サイト [#ta8a94eb]

-現場で使えるMySQL
-http://blog.cles.jp/item/473

*ツール [#l899409d]

-https://github.com/major/MySQLTuner-perl

 wget -O tuner.zip https://github.com/rackerhacker/MySQLTuner-perl/archive/master.zip
 unzip tuner.zip
 cd MySQLTuner-perl-master/
 chmod 755 mysqltuner.pl
 perl mysqltuner.pl --user root -pass='xxxxxxx'


*単体チューニング [#md7b35de]

**スロークエリーログテーブル版 [#w4028474]


***確認 [#of190e83]

 SHOW GLOBAL VARIABLES LIKE '%query_time%' ;
 SHOW GLOBAL VARIABLES LIKE '%slow_query%' ;

***設定 [#a8220a9b]

 set global log_output = 'TABLE';
 set global long_query_time = 0.3;
 set global slow_query_log = ON;
 flush logs;

***スロークエリーテーブル [#n97c130f]

 select * from mysql.slow_log order by start_time desc limit 10


**スロークエリーログ [#h323c5b7]

一定時間以上かかるクエリーやフルスキャンを行った場合にログに出力する機能。デフォルトではOFF

-SQL

 set global slow_query_log = 1;
 set global long_query_time = 0.3; --0.3秒以上なら出力
 set global slow_query_log_file ='slow_query.log'; -- 出力先 /var/lib/mysql/slow_query.log
 set global log_queries_not_using_indexes = 1
 set global log_output = 'FILE';

my.iniに以下を追加

 long_query_time=5
 log-slow-queries=c:/mysql/slow.log

フルスキャンに関しては4.1からログに取れるようになった。起動オプションに以下を加える

 --log-queries-not-using-indexes

 [mysqld]
 log_queries_not_using_indexes

**オプティマイザについて [#z9918f18]

他DBMSにおいてはコストベースのオプティマイザが優位になりつつあるが、MySQLはルールベースだけらしい。

**クエリーキャッシュ [#d438241c]

#counter

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS