search
HomeDatabaseMysql TutorialMySQL slow query log practice (graphic and text analysis)

Recommended learning: mysql video tutorial

1. Overview

MySQL’s slow query log is provided by MySQL A kind of log record, which is used to record SQL statements whose response time exceeds the threshold (long_query_time, unit: seconds) in MySQL. By default, MySQL does not start slow query logging. This article briefly introduces how to enable slow query logs and how to use mysqldumpslow to analyze slow queries.

2. Slow query log settings

1. Temporary settings

Temporarily enable the slow query log (failed after restarting)

set global slow_query_log = on;

Note: If you want to turn off the slow query log, you only need to execute set global slow_query_log = off;.

Temporary slow query time critical point Query times higher than this critical point will be recorded in the slow query log (restart failure)

set long_query_time = 1;

Set slow Query storage method (invalid after restart)

set global  log_output = file;

Explanation: As you can see, I set it to file here, which means that my slow query log is It is reflected by file. The default is none. We can set it to table or file. If it is table, the slow query information will be saved to the slow_log table under the mysql library.

2. Query the opening status of the slow query log and the storage location of the slow query log

show variables like '%quer%';

##Parameter description:

  • slow_query_log: Whether slow query has been enabled
  • slow_query_log_file: Slow query log file path
  • long_query_time: Queries that exceed the number of seconds are written to the log
log_queries_not_using_indexes If the value is set to ON, all queries that do not use indexes will be recorded (enable this during performance optimization, do not enable it normally)

3. View the log storage format

show variables like 'log_output';

4. Permanently enable the slow log

Modify my.cnf

in Add the following parameters to the [mysqld] section in the configuration file my.cnf (usually /etc/my.cnf).

[mysqld]slow_query_log= 1slow_query_log_file= /var/lib/mysql/slow-query.log # 若没有指定,默认名字为hostname_slow.loglong_query_time= 1log_queries_not_using_indexes= 1

Among them, slow_query_log = 1, means to turn on slow query, 0 means to turn off

slow_query_log_file, specify the slow query log path, MySQL needs to have write permission for this path

long_query_time = 1, indicating that the query time is >= 1 second before recording the log, the default is 10s

log_queries_not_using_indexes = 1, indicating that the SQL statements that do not use indexes are recorded

Restart the MySQL service, you will see after restarting MySQL To the /var/lib/mysql/slow-query.log file.

3. Slow query test

Create a slow query and execute it. As follows:

mysql> select sleep(1);+----------+
| sleep(1) |
+----------+
| 0 |
+----------+
1 row in set (1.00 sec)

Slow query log

Open the slow query log file. You can see that the SQL statement of the above slow query is recorded in the log.

4. Slow query analysis tool

mysqldumpslow

mysqldumpslow is MySQL’s own tool for analyzing slow queries. The tool is a Perl script.

Commonly used parameters are as follows:

  • -s: Sort method, the value is as follows
  • c: Number of queries
  • t:Query time
  • l:Lock time
  • r:Return records
  • ac:Average number of queries
  • al:Average lock time
  • ar:Average return record book
  • at:Average query time
  • -t:topN query
  • -g :Regular expression

Get the 5 most visited SQL statements:

Arrange by time The top 5 SQL statements

$ mysqldumpslow -s t -t 5 /var/lib/mysql/slow-query.log

The top 5 SQL statements sorted by time and containing 'like'

$ mysqldumpslow -s t -t 3 -g "like" /var/lib/mysql/slow-query.log

五、MySQL 清理slowlog方法

SET GLOBAL slow_query_log = 'OFF';
ALTER TABLEmysql.slow_log RENAME mysql.slow_log_drop;
CREATE TABLE mysql.slow_log LIKEmysql.slow_log_drop;
SET GLOBAL slow_query_log = 'ON';
DROP TABLE mysql.slow_log_drop;

推荐学习:mysql视频教程

The above is the detailed content of MySQL slow query log practice (graphic and text analysis). For more information, please follow other related articles on the PHP Chinese website!

Statement
This article is reproduced at:脚本之家. If there is any infringement, please contact admin@php.cn delete
What Are the Limitations of Using Views in MySQL?What Are the Limitations of Using Views in MySQL?May 14, 2025 am 12:10 AM

MySQLviewshavelimitations:1)Theydon'tsupportallSQLoperations,restrictingdatamanipulationthroughviewswithjoinsorsubqueries.2)Theycanimpactperformance,especiallywithcomplexqueriesorlargedatasets.3)Viewsdon'tstoredata,potentiallyleadingtooutdatedinforma

Securing Your MySQL Database: Adding Users and Granting PrivilegesSecuring Your MySQL Database: Adding Users and Granting PrivilegesMay 14, 2025 am 12:09 AM

ProperusermanagementinMySQLiscrucialforenhancingsecurityandensuringefficientdatabaseoperation.1)UseCREATEUSERtoaddusers,specifyingconnectionsourcewith@'localhost'or@'%'.2)GrantspecificprivilegeswithGRANT,usingleastprivilegeprincipletominimizerisks.3)

What Factors Influence the Number of Triggers I Can Use in MySQL?What Factors Influence the Number of Triggers I Can Use in MySQL?May 14, 2025 am 12:08 AM

MySQLdoesn'timposeahardlimitontriggers,butpracticalfactorsdeterminetheireffectiveuse:1)Serverconfigurationimpactstriggermanagement;2)Complextriggersincreasesystemload;3)Largertablesslowtriggerperformance;4)Highconcurrencycancausetriggercontention;5)M

MySQL: Is it safe to store BLOB?MySQL: Is it safe to store BLOB?May 14, 2025 am 12:07 AM

Yes,it'ssafetostoreBLOBdatainMySQL,butconsiderthesefactors:1)StorageSpace:BLOBscanconsumesignificantspace,potentiallyincreasingcostsandslowingperformance.2)Performance:LargerrowsizesduetoBLOBsmayslowdownqueries.3)BackupandRecovery:Theseprocessescanbe

MySQL: Adding a user through a PHP web interfaceMySQL: Adding a user through a PHP web interfaceMay 14, 2025 am 12:04 AM

Adding MySQL users through the PHP web interface can use MySQLi extensions. The steps are as follows: 1. Connect to the MySQL database and use the MySQLi extension. 2. Create a user, use the CREATEUSER statement, and use the PASSWORD() function to encrypt the password. 3. Prevent SQL injection and use the mysqli_real_escape_string() function to process user input. 4. Assign permissions to new users and use the GRANT statement.

MySQL: BLOB and other no-sql storage, what are the differences?MySQL: BLOB and other no-sql storage, what are the differences?May 13, 2025 am 12:14 AM

MySQL'sBLOBissuitableforstoringbinarydatawithinarelationaldatabase,whileNoSQLoptionslikeMongoDB,Redis,andCassandraofferflexible,scalablesolutionsforunstructureddata.BLOBissimplerbutcanslowdownperformancewithlargedata;NoSQLprovidesbetterscalabilityand

MySQL Add User: Syntax, Options, and Security Best PracticesMySQL Add User: Syntax, Options, and Security Best PracticesMay 13, 2025 am 12:12 AM

ToaddauserinMySQL,use:CREATEUSER'username'@'host'IDENTIFIEDBY'password';Here'showtodoitsecurely:1)Choosethehostcarefullytocontrolaccess.2)SetresourcelimitswithoptionslikeMAX_QUERIES_PER_HOUR.3)Usestrong,uniquepasswords.4)EnforceSSL/TLSconnectionswith

MySQL: How to avoid String Data Types common mistakes?MySQL: How to avoid String Data Types common mistakes?May 13, 2025 am 12:09 AM

ToavoidcommonmistakeswithstringdatatypesinMySQL,understandstringtypenuances,choosetherighttype,andmanageencodingandcollationsettingseffectively.1)UseCHARforfixed-lengthstrings,VARCHARforvariable-length,andTEXT/BLOBforlargerdata.2)Setcorrectcharacters

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

MantisBT

MantisBT

Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Powerful PHP integrated development environment

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use