Mysql:数据库优化步骤

数据库优化步骤

  1. 查看mysql是否存在周期性波动
    1.1 是。代表可能遇上如618,双十一等活动对数据库暂时性的压力增大,可以mysql加缓存或更改缓存策略
    1.2 不是。大概率是本身开发人员编写的SQL有问题,或者是业务量达到一定程度引发的查询慢

非周期性波动调优思路

  1. 开启慢查询,并设定慢查询的阈值(当sql执行完所消耗超过这个时间,被认定为慢查询SQL)
  2. 使用慢查询工具,找到慢查询SQL
  3. 使用explain或者show profiling对这些sql进行分析,看为啥慢

如果是SQL等待时间长,修改数据库参数
如果是SQL执行时间长,加索引,表优化等

  1. 如果上面分析并且相关调优手段都用了,效果还是不太理想。可能是达到数据库表、索引等的瓶颈了,这种是业务量导致,需要读写分离,分库分表等架构来提升了

慢查询相关操作

  1. 查看mysql是否开启慢查询

show variables like '%slow_query_log';

注:默认情况下是不开启慢查询的,因为记录慢查询日志会影响性能,所以在调优排查的时候开启即可,平时不用开启

  1. 打开或关闭慢查询(临时,重启则恢复默认出厂)

set global slow_query_log = on;
set global slow_query_log = off;

  1. 查看慢查询日志(慢查询SQL存放的文件)

show variables like '%slow_query_log%';

  1. 查看慢查询阈值

show variables like '%long_query_time%';

注:默认10s

  1. 设置慢查询阈值(临时,重启则恢复默认出厂)

set global long_query_time = 10;
set long_query_time = 10;

注:两个一并执行即可

  1. 查看慢查询SQL的数目

show global status like '%Slow_queries%';

注:这只是来判断是否存在慢sql,并不能知道哪些sql或者我们猜测的sql是否是慢查询

持久化配置

上述设置慢查询开关,阈值都是临时操作,mysql重启的话就会恢复默认出厂,如果需要重启仍然保持,需要文件配置
image

慢查询工具-mysqldumpslow

我们去分析慢查询日志,直接打开的话,展示的格式和排版,从效率上看是不利于我们排查和分析的,所以mysql提供了mysqldumpslow慢查询日志分析工具,可以对此日志文件进行分析,以友好的方式展示在界面上

比如说要根据sql查询最新时间进行排序,并且取前面5条。则:

mysqldumpslow -s t -t 5 /var/lib/mysql/slow.log

注意:此工具的使用,不是在mysql客户端内,是在操作系统下直接使用。-s表示排序规则,-t表示取前面多少条

posted @ 2023-05-30 15:33  爱编程DE文兄  阅读(13)  评论(0编辑  收藏  举报