mysql数据库查询优化

580 阅读2分钟

explain查看sql执行计划相关参数含义

expalain关键字使用

如何获得有性能问题的sql语句?

  • 通过用户反馈存在性能问题的sql
  • 通过慢查询日志获取
  • 实时获取存在性能问题的sql,数据库压力突增

慢查询日志介绍

纪录慢查询日志的开销主要是磁盘IO和日志占据的大量磁盘空间
mysql提供的慢查询相关的参数

  1. slow_query_log : 启动停止慢查日志,默认情况下mysql不会启动慢查询日志,如果我们想要开启,需要将该参数设置为ON,如果我们想启动正在运行的mysql的慢查询日志,可以通过set global命令来启动,也可以通过脚本开关来控制慢查询日志的开关,以节省纪录日志带来的磁盘开销
  2. slow_query_log_file:指定慢查询日志的存储路径及文件,如果没有指定文件名则日志被默认保存在mysql的数据目录中
  3. long_query_time:指定纪录慢查询日志sql执行时间的伐值,单位是秒,即超过时间的sql都会被纪录到慢查询日志中,此参数的默认值的为10s,通常对于较为繁忙的系统的来说设置为1毫秒即0.001秒较为合适,已
  4. log_queries_not_using_indexes:是否记录未使用索引的sql,如果启用这个参数,那么所有未使用索引的sql都会被记录到慢查询日志中,可以帮助我们提前在数据量增大前优化sql

实操
开启慢查询日志

日志参数分析 Query_time:sql执行使用的时间 Lock_time: 查询此sql使用锁的时间 Rows_sent: sql返回数据的行数 Rows_examined: 扫描数据的行数 set timestamp:查询时间