Enable Logging of Slow Queries (Slow Query Log) in MySQL Database

One of the main requirements for a fast web server is to has efficient and effective SQL statements or queries that are optimized. Any non-optimal SQL (Structured Query Language) commands or statements that take too long or lengthy time to execute will use up a lot of system resources, causing MySQL database to run slower, and then more and more queries backlogs queuing up, and when connection limit is reached, visitors are been denied or refused connection. In worst case scenario, your web server will go down as well, or continuously underperform. The case is especially true when you are using MyISAM table type which uses table-level locking instead of row-level locking in a high traffic website.

Sometime, a single SQL query may be the cause of all the server’s problems. MySQL has built-in functionality to capture slow query log or identify queries that are not optimal and take a long time to finish, which allows you to log all slow running queries which took over defined number of seconds to execute by MySQL database engine to a file. Slow query log is not activated or on by default MySQL installation, thus it is one of the less-used logs.

To enable slow query log, simply add the following line to MySQL configuration file (my.cnf or my.ini), and then restart the MySQL server:

log-slow-queries

or

log-slow-queries = [path to the log file]

Replace [path to the log file] with actual path to the slow query log file you want the MySQL to write the log to, which is the optional value.

Or you can start mysqld with with the –log-slow-queries[=file_name] option to enable the slow query log. In both syntaxes, if not log file name is specified, the default name is host_name-slow.log, stored in the MySQL data file directory. If a filename is given, but not as an absolute pathname, the server writes the file in the data directory too.

After enabling slow query log, MySQL will create, capture and log to the log file with all SQL statements that took more than long_query_time seconds to execute, which is by default set to 10 seconds. The time to acquire the initial table locks is not counted as execution time. mysqld writes a statement to the slow query log after it has been executed and after all locks have been released, so log order might be different from execution order.

You can then examine all the SQL queries that took longer than the pre-defined number of seconds (10 seconds by default) in the host_name-slow.log, and then take the necessary steps to optimize the SQL statements. The slow query log will tell you about what was time the query completed, how long the query took to run, how long it took to secure its locks, how many rows were sent back as a result, how many rows were examined to determine the result, which database was used, and the actual query itself. But bear in mind that a SQL query contained in the log may have already optimum, but executed slowly due to the system resources been used up by the actual slow statement that need to be fine tuned.


4 Responses to “Enable Logging of Slow Queries (Slow Query Log) in MySQL Database”

  1. Robert Nolan
    February 20th, 2009 21:29
    4

    I use MONyog Query analyzer to analyze slow queries. It works flawlessly.

  2. Commander1024
    December 19th, 2008 19:37
    3

    I can’t really confirm this – I enabled slow loggin in the appropiate config file (debian lenny, mysql 5.0 latest) because I HAD “some” slow queries before.
    After enabling there are thousands of “slow queries” being logged – The slow limit is set to the default of 10 sec. This is really nonsense as there can’t be a >10sec query when the whole page is being calculated, by php, tranferred over the net and rendered on the client browser in under 5 sec

    greetings Marcus

  3. misrnt
    November 1st, 2008 18:48
    2

    i try to do that but this message appeared

    081101 5:34:51 [ERROR] Fatal error: Please read “Security” section of the manual to find out how to run mysqld as root!

    081101 5:34:51 [ERROR] Aborting

    081101 5:34:51 [Note] mysqld: Shutdown complete

    what should i do in this case?

  4. Change or Set MySQL Long Query Time Value for log-slow-queries » My Digital Life
    January 23rd, 2007 00:22
    1

    [...] If you enable slow queries log of MySQL database server, you will notice that from the slow query log file contains only SQL statements and queries that took more than query_time of 10 seconds to execute or run. This is the default value or query time threshold for log_slow_queries function, which is 10 seconds. 10 seconds is way too long for a SQL query to complete, so the value may be too high to capture any meaningful data. You can alter or change the slow query time to lower value or number of seconds. You can set a new long_query_time in the MySQL configuration file, namely my.cnf or my.ini, normally located in /etc directory. Simply add the following line to the configuration file: [...]

Leave a Reply

You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe to comments feature has been disabled. To receive notification of latest comments posted, subscribe to My Digital Life Comments RSS feed or register to receive new comments in daily email digest.
Custom Search

New Articles

Incoming Search Terms for the Article

slow query log - enable slow query log - mysql enable slow query log - mysql slow query log - mysql slow query log my.cnf - log-slow-queries - mysql log slow queries my.cnf - mysql slow query log enable - log slow queries - mysql log slow queries - mysql slow query - enable the slow query log - slow query log my.cnf - enable mysql slow query log - log slow queries mysql - mysql turn on slow query log - my.cnf slow query log - log slow queries my.cnf - my.ini log - MYSQL LOG queries - how to enable slow query log - enable mysql log - log-slow-queries my.cnf - my.cnf slow query - enable slow query log mysql - log slow query - slow query logging - mysql enable slow query - my.ini slow query log - log-slow-queries my.ini - MySQL Query Log - my.cnf slow log - enable slow query - mysql enable slow queries - mysql log-slow-queries my.cnf - enable slow queries - slow query log Mysql - my.cnf slow queries - Enable the slow query log - mysql log long queries - mysql slow query enable - my.cnf query log - turn on slow query log mysql - turn on slow query log - mysql log-slow-queries - mysql slow queries log - mysql slow query log location - mysql slow query log configuration - slow queries my.cnf - enable mysql slow queries - mysql Turn on slow query logging - mysql log slow query - mysql enable slow query log my.cnf - enabling slow query log - turn on mysql slow query log - enable mysql logging - my.ini log-slow-queries - mysql enable logging - enable mysql logs - my.ini logging - slow_query_log my.cnf - how to set slowquery log in windos using my.cnf or my.ini in mysql 4.1 - my.cnf log queries - mysql enable log slow queries - mysql slow log - mysql log level - mysql log query - how to enable slow query in mysql - my.cnf log-slow-queries - mysql long query time - Enabling slow query log in mysql - my.cnf log - mysql enable slow log - slow log my.cnf - how to enable slow query log in mysql -