慢查询
2023年8月13日大约 1 分钟
慢查询
什么是mysql
慢查询
MySQL
的慢查询,全名是慢查询日志,是MySQL
提供的一种日志记录,用来记录在MySQL
中响应时间超过阀值的语句。- 运行时间超过
long_query_time
值的SQL
语句,则会被记录到慢查询日志中。 long_query_time
的默认值为10
,意思是记录运行10
秒以上的语句。
查找那些语句慢
# 比如,得到返回记录集最多的10个SQL。
mysqldumpslow -s r -t 10 /database/mysql/mysql06_slow.log
# 得到访问次数最多的10个SQL
mysqldumpslow -s c -t 10 /database/mysql/mysql06_slow.log
# 得到按照时间排序的前10条里面含有左连接的查询语句。
mysqldumpslow -s t -t 10 -g “left join” /database/mysql/mysql06_slow.log
# 另外建议在使用这些命令时结合 | 和more 使用 ,否则有可能出现刷屏的情况。
mysqldumpslow -s r -t 20 /mysqldata/mysql/mysql06-slow.log | more
explain执行计划
- 使用 EXPLAIN 关键字可以让你知道
MySQL
是如何处理你的`SQL语句的。这可以帮你分析你的查询语句或是表结构的性能瓶颈。 - EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索和排序的……等等,等等。
- explain的执行效果
mysql> explain select * from subject where id = 1 \G
******************************************************
id: 1
select_type: SIMPLE
table: user # 表示访问那个表
partitions: NULL
type: const
possible_keys: PRIMARY
key: PRIMARY # 使用了主键索引,如果为null代表没有使用索引
key_len: 4 # 表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
ref: const
rows: 1
filtered: 100.00 # 查询的表行占表的百分比
Extra: NULL
******************************************************