1. What is MySQL slow query log
MySQL slow query log is a performance analysis tool that comes with MySQL and is used to record queries that exceed a specified time threshold. Query request. The slow query log records different performance indicators of each query, such as the required time, number of executions, and execution plan. Developers can use these metrics to identify queries that need optimization to improve efficiency and take appropriate action.
By default, MySQL's slow query log is usually not enabled and requires manual configuration to enable it. Querying the slow log can be enabled by setting parameters in the MySQL configuration file (my.cnf). The following is an example configuration for querying the slow log:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
log_queries_not_using_indexes = 1
long_query_time = 2
Among them, the slow_query_log parameter is used to enable slow query logs, the slow_query_log_file parameter specifies the location of the slow query log file, the log_queries_not_using_indexes parameter is used to log unused information of slow query indexes, and the long_query_time parameter Used to specify the query timeout, in seconds.
2. How to enable MySQL slow query log
By default, MySQL 5.7 and above enable slow query log. Manual configuration is necessary to enable the query slow log feature, especially for older versions of MySQL such as MySQL 5.6 or 5.5, etc. The following are the detailed steps to enable MySQL query slow log:
Open the MySQL configuration file
By default, the MySQL configuration file is in the Linux system The path in is /etc/my.cnf. In Windows systems, the configuration file is usually located in C:Program FilesMySQLMySQL Servermy.ini or C:ProgramDataMySQLMySQL Servermy.ini. Open the file with your favorite editor.
Enable slow query log
Find the following line in the configuration file:
Remove the comment symbol # from this line and change the value to 1.
slow_query_log = 1
Specify the slow log file path
Find the following line:
Remove the comment symbol # from the line and change the file path to the path you want.
slow_query_log_file = /var/log/mysql/mysql-slow.log
Configure query timeout
Find the following Line:
Remove the comment symbol # from this line and change the value to your desired query timeout threshold in seconds.
long_query_time = 2
Configure the switch for index unused information
Find the following line:
Remove the comment symbol # from this line and change the value to 1 to enable unused slow query indexes in logging operations.
log_queries_not_using_indexes = 1
Save and close the configuration file
Check whether the configuration file has been saved and close the file.
Restart MySQL service
Use the following command to restart the MySQL service:
sudo systemctl restart mysqld
3. How to view the MySQL slow query log
Once you have enabled the MySQL slow query log, the slow query log will automatically record the query information and store it in the specified slow query log file . You can use the following command to view the slow query log:
sudo tail -n 100 /var/log/mysql/mysql-slow.log
Use this command to display the latest 100 slow query logs Record. You can also change the number of rows displayed to your liking. The output will include the time required to execute the slow query and all data tables and subqueries involved in the query.
If you need to query slow logs by date filtering, you can use grep and awk to filter the logs on Linux, as shown below:
grep "21-Jun-2022" /var/log/ mysql/mysql-slow.log | awk '{print substr($2,0,length($2)-1)" "$3$4" "$5}' | less
This command will output in June 2022 All timestamps containing slow query logs on the 21st of the month.
4. How to analyze and optimize MySQL query slow logs
After collecting enough MySQL query slow logs, you can analyze them to determine the queries that need to be optimized. . Here are some best practices for analyzing and optimizing query performance:
Parsing query slow logs with pt-query-digest
pt -query-digest is an open source software that can help you analyze MySQL query slow logs and optimize for problems that arise in them. Here are the steps to install and use pt-query-digest:
Install Percona Toolkit
On CentOS 7, you can install it using the following command .
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
yum install percona-toolkit
Parse and query slow logs
You can use the following command to use pt-query-digest to parse and query slow logs.
pt-query-digest /var/log/mysql/mysql-slow.log > slow-query-analysis.out
Analysis query slow log
Use pt-query-digest to get a detailed analysis report on slow query logs. You can look for the queries that occur most frequently and have the longest timeouts and identify those that need optimization.
Using index fields
The MySQL query slow log records all queries that did not successfully use the index. You can use this information to determine which queries did not. Use appropriate field indexes to speed up queries. Adding indexes in MySQL can greatly optimize query performance. It is important to note that adding too many indexes may reduce query performance because it may increase the cost of query requests and update operations.
Optimize query statements
The query slow log can tell you which queries need to be optimized. If the execution time exceeds the set threshold, the query will be recorded in the log file. You can check the query statement and try using different query statements to optimize execution speed.
Use caching mechanism
The caching mechanism can greatly improve the query speed. If the query results are already stored in the cache, you can avoid query execution and resource overhead and return the results directly. Caching mechanisms can be implemented by using cache providers such as Redis and Memcached.
Adjust MySQL server parameters
The performance of MySQL server can be optimized by adjusting various parameters to optimize the entire database. These parameters include MySQL cache size, connection limit, query timeout, etc. By adjusting these parameters, database service performance can be optimized for specific queries.
The above is the detailed content of How to enable mysql query slow log. For more information, please follow other related articles on the PHP Chinese website!