LoginSignup
1
2

More than 3 years have passed since last update.

Mysqlのチューニングまとめ

Posted at

Mysqlのチューニングのよく使う手段をまとめる

環境

AWS RDS
mysql: 5.7.23
パフォーマンスインサイト有効にしてる

SlowQuery

設定

slow_query_log ON 説明
slow_query_log_file /var/lib/mysql/slow.log logファイルのパス
log_output TABLE mysql.slow_logテーブルへ出力する
long_query_time 5 5秒超えると、slow_queryと判定する

本番DBで何回SQL何回実行しても遅い

index追加、アプリの改善が効きそう

本番DBでの実行は一時的遅い

lock waitを監視する

パフォーマンスインサイトでlocks周りのメトリクスでlock発生してかどうかを確認

lock発生した場合は、どのQueryかを特定する

SELECT r.trx_id waiting_trx_id,  
       r.trx_mysql_thread_id waiting_thread,
       r.trx_started waiting_started,
       r.trx_tables_in_use waiting_tables_in_use,
       r.trx_query waiting_query,
       b.trx_id blocking_trx_id, 
       b.trx_mysql_thread_id blocking_thread,
       b.trx_started blocking_started,
       b.trx_tables_in_use blocking_tables_in_use,
       b.trx_query blocking_query
   FROM       information_schema.innodb_lock_waits w
   INNER JOIN information_schema.innodb_trx b  ON  
    b.trx_id = w.blocking_trx_id
  INNER JOIN information_schema.innodb_trx r  ON  
    r.trx_id = w.requesting_trx_id;

https://dev.mysql.com/doc/refman/5.6/ja/innodb-information-schema-examples.html
こちらを参考に、jenkinsかlamdaで上のSQLの結果をCSVで溜め込んで調査する

blocking_query見つかったら、そちらを改善する

buffer pool

パフォーマンスインサイトでこの二つ見る

メトリクス名 説明
innodb_buffer_pool_hit_rate buffer poolへのヒット率、基本は99%以上ある、低い場合はbuffer poolサイズをあげた方が良い
innodb_buffer_pool_usage buffer pool利用率、高くなると、余裕を持って、buffer poolサイズをあげた方が良い
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2