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)
- 如果查询的页非常多,明显感觉是页数量大了导致查询慢,可以考虑把这些页放到缓冲池中
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验