mysql 调优-思路和系统参数

思路

  • 是否存在周期波动(如果是云数据库,控制台能看到),如果是,分析高峰,适当加缓存
  • 加了缓存仍没有解决问题,开启慢查询,并使用 EXPLAIN 分析慢 sql 索引情况,也可通过 profile 查看每个步骤时间成本
    • 分析结果如果是等待时间长,对数据库参数进行调优(连接池等)
    • 分析结果如果是 sql 执行时间长,优化索引,join 过多,库表设计(范式,冗余等)
  • 如果还是没有解决,是否达到瓶颈
    • 如果没有达到瓶颈,重复上面的步骤再次检查
    • 如果达到了,考虑读写分离,分库分表,增加服务器

系统性能参数

MySQL 中可以通过 SHOW STATUS 查看一些数据库服务器的性能参数、执行频率

参数 解释 备注
Connections 连接 MySQL 服务器的次数 连接 MySQL 服务器的次数
Uptime MySQL 服务器的上 线时间 最近一次到现在运行的时间,单位秒
Slow_queries 发生慢查询的次数 要先设置阈值,大于阈值的才被视作慢查询
Innodb_rows_read Select 查询返回的行数
Innodb_rows_inserted 执行 INSERT 操作插入的行数
Innodb_rows_updated 执行 UPDATE 操作更新的行数
Innodb_rows_deleted 执行 DELETE 操作删除的行数
Com_select 查询操作的次数
Com_insert 插入操作的次数 对于批量插入的 INSERT 操作,只累加一次
Com_update 更新操作的次数
Com_delete 删除操作的次数
-- 连接次数
show status like '%Connections%';

-- CRUD 总行数
show status like 'Innodb_rows%';

-- 查询次数
show status like 'Com_select';

统计SQL的查询成本

  • show status like 'last_query_cost',最后一次查询了多少数据页
  • 当有多种查询方式可选的话,比较好比较效率(有可能查询的数据页很多,花费的时间却并不明显,因为区里面的数据页很多都是连续的,顺序I/O)
  • 如果查询的页非常多,明显感觉是页数量大了导致查询慢,可以考虑把这些页放到缓冲池中
posted @ 2023-05-17 15:38  CyrusHuang  阅读(28)  评论(0编辑  收藏  举报