0. 環境
[OS] CentOS 6.10
[MySQL] 5.1
1. 前提
MySQLシステム変数は、SESSIONとGLOBALがあるので注意。
有効範囲はそれぞれ「SESSIONは接続ごと」「GLOBALはMySQL起動中」というふうに異なります。
GLOBALスコープで設定した値は、MySQL再起動で消失します。(これを防ぎたい場合、mysql.cnfに直接記載)
- MySQL8からは、
SET PERSIST ..
とすることで消失を防げる。
- MySQL8からは、
2. 接続
- MySQLに接続。
mysql -u root -p
3. コマンド (SESSIONスコープ)
下記は、
SHOW SESSION VARIABLES ..
と書いたのと同義。現在の値
-- SlowQueryを出力するか? SHOW VARIABLES LIKE 'slow_query_log'; -- 何秒を超えたらSlowQueryとして出力するか? SHOW VARIABLES LIKE 'long_query_time'; -- SlowQuery出力先のファイル名 SHOW VARIABLES LIKE 'slow_query_log_file';
更新
SET long_query_time = 3;
(注)
slow_query_log
とslow_query_log_file
はGLOBALスコープでのみ変更可能。
4. コマンド (GLOBALスコープ)
現在の値
-- SlowQueryを出力するか? SHOW GLOBAL VARIABLES LIKE 'slow_query_log'; -- 何秒を超えたらSlowQueryとして出力するか? SHOW GLOBAL VARIABLES LIKE 'long_query_time'; -- SlowQuery出力先のファイル名 SHOW GLOBAL VARIABLES LIKE 'slow_query_log_file';
更新
SET GLOBAL slow_query_log = 'ON'; SET GLOBAL long_query_time = 3; SET GLOBAL slow_query_log_file = '/var/tmp.log';
(注)
slow_query_log
とslow_query_log_file
はGLOBALスコープのみに存在する変数のため、上記を実行するとすぐにSESSIONスコープにも反映されます。
5. 確認用SQL
下記SQLを実行してSlowQueryLogに出力されるか確認して下さい。
SELECT SLEEP(4);