MySQL面试考点
MySQL-优化
定位慢查询
在MySQL中,如何定位慢查询?
方案一:开源工具
调试工具:Arthas
运维工具:Prometheus、Skywalking
方案二:MySQL自带慢日志
慢查询日志记录了所有执行时间超过指定参数(long_query_time,单位:秒,默认10秒)的所有SQL语句的日志
如果要开启慢查询日志,需要在MySQL的配置文件中配置如下信息:
# 开启MySQL慢日志查询开关
slow_query_log=1
# 设置慢日志的时间2秒,SQL语句执行时间超过2秒,就会是为慢查询,记录慢查询日志
long_query_time=2
SQL语句执行很慢,如何分析呢?
- 聚合查询 => SQL执行计划可以找到慢的原因
- 多表查询 => SQL执行计划可以找到慢的原因
- 表数据量过大查询 => SQL执行计划可以找到慢的原因
- 深度分页查询
EXPLAIN SELECT 字段列表 FROM 表名 WHERE 条件;
EXPLAIN SELECT * FROM t_user WHERE ID = '1'
id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
---|---|---|---|---|---|---|---|---|---|---|---|
1 |