
mysqldumpslow Command in Linux
The mysqldumpslow command is a useful utility provided by MySQL that helps in analyzing and summarizing the slow query log. This command is particularly helpful for database administrators and developers who want to identify and optimize slow-running queries in their MySQL databases.
In this tutorial, we will explore the mysqldumpslow command in detail, including its installation, configuration, and usage with practical examples.
Table of Contents
Here is a comprehensive guide to the options available with the mysqldumpslow command −
- Understanding mysqldumpslow Command
- How to Use mysqldumpslow Command in Linux
- Examples of mysqldumpslow Command in Linux
- Advanced Usage and Options
- Troubleshooting Tips for mysqldumpslow Command
Understanding mysqldumpslow Command
The mysqldumpslow command reads the slow query log and summarizes the queries based on various criteria. It helps in identifying the most frequent and time-consuming queries, allowing you to focus on optimizing them.
How to Use mysqldumpslow Command in Linux?
Before we dive into the mysqldumpslow command, ensure you have the following −
- A Linux system with root or sudo access.
- MySQL installed on your system.
- Basic knowledge of MySQL and Linux command-line operations.
Step 1: Install MySQL
If you haven't installed MySQL yet, you can do so using the following commands −
sudo apt update sudo apt install mysql-server -y

Step 2: Enable Slow Query Log
To use the mysqldumpslow command, you need to enable the slow query log in your MySQL configuration. The slow query log records queries that take longer than a specified duration to execute.
Edit MySQL Configuration File −
Open the MySQL configuration file (/etc/mysql/my.cnf or /etc/my.cnf) in a text editor −
sudo nano /etc/mysql/my.cnf
Enable Slow Query Log −
Add the following lines under the [mysqld] section to enable the slow query log −
[mysqld] slow_query_log = 1 slow_query_log_file = /var/log/mysql/slow-query.log long_query_time = 2
- slow_query_log − Enables the slow query log.
- slow_query_log_file − Specifies the file where slow queries will be logged.
- long_query_time − Specifies the threshold (in seconds) for a query to be considered slow. In this example, queries taking longer than 2 seconds will be logged.
Restart MySQL Service −
Restart the MySQL service to apply the changes −
sudo systemctl restart mysql

Step 3: Basic Usage of mysqldumpslow
To analyze the slow query log using mysqldumpslow, use the following command −
mysqldumpslow /var/log/mysql/slow-query.log

This command reads the slow query log and provides a summary of the slow queries.
Step 4: Common Options and Examples
The mysqldumpslow command supports various options that allow you to customize the analysis. Here are some common options and examples −
- t − Sort by query time (default).
- l − Sort by lock time.
- r − Sort by rows sent.
- c − Sort by count.
Examples of mysqldumpslow Command in Linux
Let's explore some detailed examples and explanations of the mysqldumpslow command and its usage.
Analyzing Slow Queries by Query Time
To analyze the slow queries and sort them by query time, use the following command −
-s − Sorts the output based on different criteria. The available options are −
sudo mysqldumpslow -s t /var/log/mysql/slow-query.log

This command sorts the slow queries based on their execution time, allowing you to identify the queries that take the longest to execute.
Displaying the Top 10 Slow Queries
To display the top 10 slow queries, use the -t option. -t − Limits the number of queries displayed in the output −
sudo mysqldumpslow -t 10 /var/log/mysql/slow-query.log

This command limits the output to the top 10 slow queries, making it easier to focus on the most critical queries.
Displaying All Queries with Abstracted Values
To display all queries, including those with abstracted values, use the -a option. -a: Displays all queries, including those with abstracted values −
sudo mysqldumpslow -a /var/log/mysql/slow-query.log

This command provides a comprehensive view of all slow queries, including those with abstracted values such as for parameters.
Filtering Queries Based on a Regular Expression
To filter queries based on a regular expression, use the -g option. -g: Filters queries based on a regular expression. −
sudo mysqldumpslow -g "SELECT.*FROM.*users" /var/log/mysql/slow-query.log

This command filters the slow queries to display only those that match the specified regular expression. In this example, it displays queries that select data from the users table.
Advanced Usage and Options
The mysqldumpslow command supports various advanced options that provide additional functionality and flexibility. Here are some commonly used options −
-r: Reverses the sort order
This command sorts the slow queries by query time in reverse order, displaying the shortest queries first.
Example −
sudo mysqldumpslow -s t -r /var/log/mysql/slow-query.log

-l: Sorts the output by lock time
This command sorts the slow queries based on their lock time, allowing you to identify queries that cause the most locking issues.
Example −
sudo mysqldumpslow -s l /var/log/mysql/slow-query.log

-c: Sorts the output by count
This command sorts the slow queries based on their frequency, displaying the most frequent queries first.
Example −
sudo mysqldumpslow -s c /var/log/mysql/slow-query.log

-n: Limits the number of abstracted values displayed
This command limits the number of abstracted values displayed in the output, making it easier to read and analyze the queries.
Example −
sudo mysqldumpslow -n 5 /var/log/mysql/slow-query.log

Troubleshooting Tips for mysqldumpslow Command
Here are some common issues and troubleshooting tips for using mysqldumpslow −
Permission Issues − Ensure that the MySQL user has the necessary permissions to access the slow query log. Use the chown command to set the appropriate ownership −
sudo chown mysql:mysql /var/log/mysql/slow-query.log

Log File Location − Ensure that the slow query log file is located in the correct directory and that the path is specified correctly in the mysqldumpslow command.
Log File Size − If the slow query log file is too large, consider rotating the log file to manage its size. Use the logrotate utility to automate log rotation −
sudo nano /etc/logrotate.d/mysql-slow
Add the following configuration −
/var/log/mysql/slow-query.log { daily rotate 7 compress missingok notifempty create 640 mysql mysql postrotate /usr/bin/mysqladmin flush-logs endscript }
This configuration rotates the slow query log daily, keeps seven days of logs, compresses old logs, and flushes the logs after rotation.
Conclusion
The mysqldumpslow command is a powerful tool for analyzing and summarizing the slow query log in MySQL. By following the steps outlined in this tutorial, you can configure, analyze, and optimize slow queries in your MySQL databases with ease. This setup is particularly useful for database administrators and developers who want to improve the performance and efficiency of their MySQL databases.
With the ability to customize the analysis and filter queries based on various criteria, mysqldumpslow provides a flexible and efficient solution for managing slow queries on a Linux system.