mysql>SET GLOBAL long_query_time = 5; -- 设置long_query_time参数值为5秒 mysql>show variables like '%long_query_time%'; -- 查看long_query_time参数值 +-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | long_query_time | 5.000 | +-----------------+-------+
MySQL记录下的慢查询语句可以通过查看slow_query_log参数配置的文件来查看,该文件默认为服务器数据目录下的slow.log文件。如果没有启用slow_query_log参数,则无法记录慢查询语句。可以通过设置log_slow_queries参数来启用或关闭慢查询日志。
mysql>SET GLOBAL log_slow_queries = ON; -- 启用慢查询日志 mysql>show variables like '%slow_query_log%'; -- 查看慢查询日志参数 +----------------+-------+ | Variable_name | Value | +----------------+-------+ | slow_query_log | ON | +----------------+-------+
当MySQL执行一条查询语句时,会逐步执行语句中的各个步骤。执行过程中会不断进行优化,以提高查询效率。在执行查询过程中,可以通过EXPLAIN关键字来查看查询的执行计划,以帮助优化查询。
mysql>EXPLAIN SELECT * FROM test WHERE id >100; -- 查看查询执行计划 +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+ | id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+ | 1 | SIMPLE | test | NULL | ALL | NULL | NULL | NULL | NULL | 110 | 100.00 | Using where | +----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+-------------+
查询语句执行过程中,可能会因为一些原因导致慢查询。常见的情况包括:
- 查询语句中使用了不当的索引或未使用索引
- 查询语句中涉及太多的表或子查询
- 查询语句中涉及大量数据的操作
为了避免慢查询,在开发过程中需要注意查询的性能问题,结合EXPLAIN工具来优化查询语句,减少慢查询的发生。