#author("2020-03-10T00:32:52+00:00","default:wikiadmin","wikiadmin")
#author("2020-03-10T00:33:31+00:00","default:wikiadmin","wikiadmin")
-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]

*InnoDB バッファキャッシュ [#v7a449a9]

 MariaDB [(none)]> show global status like 'Innodb_buffer_pool_read%';
 +---------------------------------------+---------+
 | Variable_name                         | Value   |
 +---------------------------------------+---------+
 | Innodb_buffer_pool_read_ahead         | 1942    |
 | Innodb_buffer_pool_read_ahead_evicted | 0       |
 | Innodb_buffer_pool_read_ahead_rnd     | 0       |
 | Innodb_buffer_pool_read_requests      | 8868784 |
 | Innodb_buffer_pool_reads              | 2373    |
 +---------------------------------------+---------+

| Variable_name                         | Value   |
| Innodb_buffer_pool_read_ahead         | 1942    |
| Innodb_buffer_pool_read_ahead_evicted | 0       |
| Innodb_buffer_pool_read_ahead_rnd     | 0       |
| Innodb_buffer_pool_read_requests      | 8868784 |
| Innodb_buffer_pool_reads              | 2373    |

-計算式

 (1 - (innodb_buffer_pool_reads / innodb_buffer_pool_read_requests)) ×100
 上の例では
 (1 - (2373/8868784))*100 = 0.973254507044032 で97%

#counter

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS