SQL_查询优化

SQL_查询优化

如何获取有性能问题的SQL

  • 通过用户反馈获取存在性能问题的SQL(不讲解)

  • 通过慢查询日志获取存在性能问题的SQL
  • 实时获取存在性能问题的SQL

通过慢查询日志获取存在性能问题的SQL

使用慢查询日志获取有性能问题的SQL

slow_query_log 参数:on 启动停止记录慢查询日志(默认关闭)

slow_query_log_file 指定慢查询日志的存储路径及文件(默认情况下保存在MySQL的数据目录中)==推荐:==将日志存储和数据存储分开存储

long_query_time 指定记录慢查询日志SQL执行时间的伐值(默认值为10秒。默认单位:秒。推荐:改为1毫秒)记录所有符合条件的SQL:包括查询语句、修改语句、回滚SQL。

log_queries_not_using_indexes 是否记录所有未使用索引的SQL

使用慢查询日志获取有性能的SQL

慢查询日志中的内容:
常用的慢查询日志分析工具(mysqldumpslow)

汇总除查询条件外其他完全相同的SQL,并将分析结果按照参数中所指定的顺序输出。

mysqldumpslow -s r -t 10 slow-mysql.log

-s order(c,t,l,at,al,ar)指定按照那种排序方式输出结果。

c:总次数

t:总时间

l:锁的时间

r:总数据行

at,al,ar:t,l,r平均数(例:at = 总时间/总次数)

-t top 指定取前几条作为结果输出

实时获取性能问题的SQL

SELECT id,`usr`,`host`.DB,command,`time`,state,info FROM information_schema.PROCESSLIST WHERE TIME >=60

查询速度为什么会慢

  • 客户端发送SQL请求给服务器
  • 服务器检查是否可以在查询缓存中命中该SQL
  • 服务器端进行SQL解析,预处理,再由优化器生成对应的执行计划
  • 根据执行计划,调用存储引擎API来查询数据
  • 将结果返回给客户端

以上就是MySQL服务器处理查询请求的整个过程

SQL的解析预处理及生成执行计划

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值