📖 Scenario: You are a database administrator for a small online store. You want to monitor and profile the queries running on your MySQL server to find slow queries and improve performance.
🎯 Goal: Learn how to enable the slow query log, set a threshold for slow queries, and view the slow queries recorded by MySQL.
📋 What You'll Learn
Enable the slow query log in MySQL
Set the slow query time threshold to 2 seconds
Run a sample slow query
View the slow query log output
💡 Why This Matters
🌍 Real World
Monitoring slow queries helps database administrators find and fix performance bottlenecks in real applications.
💼 Career
Knowing how to enable and read MySQL slow query logs is a key skill for database administrators and DevOps engineers.
Progress0 / 4 steps
1
Enable the slow query log
Write a MySQL command to enable the slow query log by setting slow_query_log to ON.
MySQL
Hint
Use SET GLOBAL slow_query_log = ON; to enable the slow query log.
2
Set the slow query time threshold
Write a MySQL command to set the slow query time threshold by setting long_query_time to 2 seconds.
MySQL
Hint
Use SET GLOBAL long_query_time = 2; to set the threshold to 2 seconds.
3
Run a sample slow query
Write a MySQL query that will take longer than 2 seconds to run. Use SELECT SLEEP(3); to simulate a slow query.
MySQL
Hint
Use SELECT SLEEP(3); to simulate a query that runs for 3 seconds.
4
View the slow query log
Write a MySQL command to show the contents of the slow query log file. Use SHOW VARIABLES LIKE 'slow_query_log_file'; to find the file path, then use system cat <file_path> to display the log contents.
MySQL
Hint
First find the slow query log file path with SHOW VARIABLES LIKE 'slow_query_log_file';. Then use system cat <file_path> to view the log.
Practice
(1/5)
1. What is the main purpose of SHOW PROCESSLIST in MySQL monitoring?
easy
A. To display currently running queries and their status
B. To list all database users
C. To show the database schema
D. To backup the database
Solution
Step 1: Understand the command purpose
SHOW PROCESSLIST lists all active threads and queries running on the MySQL server.
Step 2: Identify what it displays
It shows query IDs, user, host, command, time, and status of each running query.
Final Answer:
To display currently running queries and their status -> Option A
Quick Check:
SHOW PROCESSLIST = Running queries info [OK]
Hint: SHOW PROCESSLIST shows active queries and their states [OK]
Common Mistakes:
Confusing it with user listing commands
Thinking it shows database structure
Assuming it performs backups
2. Which of the following is the correct syntax to enable the MySQL slow query log?
easy
A. SET GLOBAL slow_query_log = ON;
B. SET GLOBAL slow_query_log = 1;
C. ENABLE slow_query_log;
D. START slow_query_log;
Solution
Step 1: Recall the correct syntax for enabling slow query log
MySQL uses numeric values 0 (off) and 1 (on) for boolean system variables.
Step 2: Check each option
SET GLOBAL slow_query_log = 1; uses SET GLOBAL slow_query_log = 1; which is correct syntax to enable the slow query log.
Final Answer:
SET GLOBAL slow_query_log = 1; -> Option B
Quick Check:
Enable slow query log with 1, not ON [OK]
Hint: Use 1 or 0 to enable/disable slow query log [OK]
Common Mistakes:
Using ON instead of 1
Using ENABLE or START commands which don't exist
Confusing session and global variables
3. Given the query:
SHOW STATUS LIKE 'Slow_queries';
What does the output number represent?
medium
A. The maximum time a query took to execute
B. The total number of queries executed since server start
C. The number of currently running slow queries
D. The number of queries that took longer than the slow query time threshold
Solution
Step 1: Understand the status variable 'Slow_queries'
This variable counts how many queries exceeded the slow query time limit since the server started.
Step 2: Interpret the output meaning
The number is cumulative, showing total slow queries, not current or max time.
Final Answer:
The number of queries that took longer than the slow query time threshold -> Option D
Quick Check:
Slow_queries = count of slow queries [OK]
Hint: Slow_queries counts total slow queries since server start [OK]
Common Mistakes:
Thinking it shows current running slow queries
Confusing it with total queries count
Assuming it shows max query time
4. You run SHOW PROFILE; but get an error saying profiling is disabled. What should you do to fix this?
medium
A. Run SET profiling = 1; before running queries
B. Restart MySQL server to enable profiling
C. Run ENABLE PROFILING; command
D. Profiling is deprecated and cannot be enabled
Solution
Step 1: Understand profiling status
Profiling is off by default and must be enabled per session with SET profiling = 1;.
Step 2: Identify correct enabling method
Run SET profiling = 1; before running queries correctly enables profiling for the current session before running queries.
Final Answer:
Run SET profiling = 1; before running queries -> Option A
Quick Check:
Enable profiling with SET profiling = 1 [OK]
Hint: Enable profiling per session with SET profiling = 1 [OK]
Common Mistakes:
Trying to enable profiling globally or via restart
Using ENABLE PROFILING command which doesn't exist
Assuming profiling is permanently on
5. You want to find the top 3 slowest queries executed on your MySQL server using the slow query log. Which approach is best?
hard
A. Run SHOW PROCESSLIST and sort by longest running queries
B. Use EXPLAIN on all queries to find slow ones
C. Enable slow query log, then query the mysql.slow_log table ordering by query_time DESC LIMIT 3
D. Restart MySQL with debug mode to log slow queries
Solution
Step 1: Enable slow query log and log to table
Set slow_query_log = 1 and log_output = 'TABLE' to log slow queries into mysql.slow_log table.
Step 2: Query the slow_log table for top slow queries
Run SELECT * FROM mysql.slow_log ORDER BY query_time DESC LIMIT 3; to get the slowest queries.
Final Answer:
Enable slow query log, then query the mysql.slow_log table ordering by query_time DESC LIMIT 3 -> Option C
Quick Check:
Slow query log table + ORDER BY query_time DESC = top slow queries [OK]
Hint: Query slow_log table ordered by query_time DESC for slowest queries [OK]
Common Mistakes:
Using SHOW PROCESSLIST which shows only current queries
Using EXPLAIN which analyzes query plan, not runtime
Restarting server unnecessarily for logging
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.