=== Slow Query Logs === Checking the slow query logs via mysql prompt. \\ \\Note: You CAN enable the slow query logging on runtime. A mysql restart will flush the changes made via runtime. If you wish for persistence then add it to the /etc/my.cnf file: mysql> SHOW GLOBAL VARIABLES LIKE 'slow\_%'; +---------------------+-------------------------------+ | Variable_name | Value | +---------------------+-------------------------------+ | slow_query_log | ON | | slow_query_log_file | /path/to/slow_query.log | +---------------------+-------------------------------+ Set the logs to another path: mysql> SET GLOBAL slow_query_log_file = '/path/to/slow_query.log'; mysql> SET GLOBAL slow_query_log = 'ON'; \\ Via the command line: \\ \\ You can check to see if slow query logging is currently enabled. The following command assumes you have configured .my.cnf file: show variables like "%slow%"; Or you can run the following from the command line: mysql -e 'show variables;' | grep slow_query_log Output should show something similar to: +---------------------+---------------------------------+ | Variable_name | Value | +---------------------+---------------------------------+ | log_slow_queries | OFF | | slow_launch_time | 2 | | slow_query_log | OFF | | slow_query_log_file | /var/run/mysqld/mysqld-slow.log | +---------------------+---------------------------------+ Or: slow_query_log OFF slow_query_log_file /var/run/mysqld/mysqld-slow.log \\ === How many slow queries? === You can also use the following command to view if you currently have any slow queries (if logging has been enabled): show status like '%slow%'; Or from the command line: mysql -e 'show status;' | grep -i slow This should produce a similar output: Slow_launch_threads 0 Slow_queries 0 \\ ---------------------------------------------------------------- === Configuring Slow Query logs === \\ There are 2 options for configuring slow query logs: \\ \\ -** Run time** - this will configure the slow query logs in the current runtime environment, when mysql is restarted the value will be lost. You will need to configure the value in the /etc/my.cnf for variables to remain \\ \\ - **Permanent** - editing the /etc/my.cnf will allow mysql to retain the values once the service has been restarted. Changing this file will NOT change the current runtime environment. \\ \\ **__NOTE__**: To enable to variables without restarting the service, use a combination of both techniques above. \\ \\ === Run-time Configuration === \\ If run the following command it will set slow query logging without needing to restart mysql mysql -e 'set global log_slow_queries = 1;' \\ You can now run the following command and it should produce an output saying that slow_query logging is enabled: mysql -e 'show variables;' | grep slow \\ === /etc/my.cnf - Permanent Configuration === slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow.log long_query_time = 10 log_queries_not_using_indexes = 1 **Note**: Change permissions so that mysqld can write to the specified log file. Giving write permissions to the 'other' group should suffice.