参考本・サイト

ツール

使ってない!

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'

単体チューニング

スロークエリーログテーブル版

確認

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

設定

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

スロークエリーテーブル

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

スロークエリーログ

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

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

オプティマイザについて

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

クエリーキャッシュ

InnoDB バッファキャッシュ

MariaDB [(none)]> show global status like 'Innodb_buffer_pool_read%';
Variable_nameValue
Innodb_buffer_pool_read_ahead1942
Innodb_buffer_pool_read_ahead_evicted0
Innodb_buffer_pool_read_ahead_rnd0
Innodb_buffer_pool_read_requests8868784
Innodb_buffer_pool_reads2373
(1 - (innodb_buffer_pool_reads / innodb_buffer_pool_read_requests)) ×100
上の例では
(1 - (2373/8868784))*100 = 0.973254507044032 で97%
Counter: 9626, today: 4, yesterday: 1

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2022-10-14 (金) 13:16:52