MySQLのチューニングポイント
〔PHPカンファレンス2017〕のMySQLのセッションを聴講して
〔PHPカンファレンス2017〕のMySQLのセッションを聴講して、非常にためになったが、
すぐに忘れてしまうので、要点をメモ。
MySQLの手短に行うチューニングのポイントは、以下の4つとのこと。
スローログをみれるようにする。
以下のように設定するとスローログが出力されるようになる。
name default recommend slow_query_log 0(off) 1(on) long_query_time 10 0.2(まあ、都合のように0.2~0.5) log_output FILE FILE
スローログを見て、特定のクエリが、遅い場合は、そのクエリをチューニングすればよいことになるが、
以下を考慮する。- Rows_examined/Rows_sentが小さいこと(31くらい)
- Rows_examined・・・クエリーがスキャンした行数
- Rows_sent・・・クエリがアプリに返す結果セットの行数(更新系は0となる)
バッファープールについて理解する
- ここはなんとなくわかるので割愛。
- ただ、留意点として、次項のインデックスをきれいに使うと、バッファープールも小さくなる。
インデックスについて
- 基本的には
where column1 = value1 and column2 = value2 order by column3
のように =とandしか使用していないときは、 column1、column2、column3にインデックスをはればよいらしいが、joinは、大変になる。
- 基本的には
劇薬に手を出さない
以下のような設定などは、早くなるが、復旧できなくなる可能背があるので、行わないようにする。
補足
自分でよく分からなかったことを以下に調べた。