How do I enable the MySQL slow query log? [duplicate]
My MySQL version details are
- Server: Localhost via UNIX socket
- Software: MySQL
- Software version: 5.0.96-community-log - MySQL Community Edition (GPL)
- Protocol version: 10
How do I enable the MySQL slow query log?
Version 5.1.6 and above:
1. Enter the MySQL shell and run the following command:
set global slow_query_log = 'ON';
2. Enable any other desired options. Here are some common examples:
Log details for queries expected to retrieve all rows instead of using an index:
set global log_queries_not_using_indexes = 'ON'
Set the path to the slow query log:
set global slow_query_log_file ='/var/log/mysql/slow-query.log';
Set the amount of time a query needs to run before being logged:
set global long_query_time = 20;
(default is 10 seconds)
3. Confirm the changes are active by entering the MySQL shell and running the following command:
show variables like '%slow%';
Versions below 5.1.6:
Edit the /etc/my.cnf file with your favorite text editor vi /etc/my.cnf
-
Add the following line under the “[mysqld]” section. Feel free to update the path to the log file to whatever you want:
log-slow-queries=/var/log/mysql/slow-query.log
3. Enable additional options as needed. Here are the same commonly used examples from above:
Set the amount of time a query needs to run before being logged:
`long_query_time=20
(default is 10 seconds)`
Log details for queries expected to retrieve all rows instead of using an index:
`log-queries-not-using-indexes`
4. Restart the MySQL service:
service mysqld restart
5. Confirm the change is active by entering the MySQL shell and running the following:
show variables like '%slow%';
Update:1
According to MySQL docs, the error #1193 occurs when you use wrong code for SQLSTATE.
Message: Unknown system variable %s
And, as you can see on the same page, the SQLSTATE 99003 is not defined.
refer this link:
http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html
http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html
If your server is above 5.1.6 you can set the slow query log in the runtime itself. For which you have to execute this queries.
set global log_slow_queries = 1;
set global slow_query_log_file = <some file name>;
Or alternatively you can set the this options in the my.cnf/my.ini
option files
log_slow_queries = 1;
slow_query_log_file = <some file name>;
Refer: http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_slow_query_log_file