目标 稳定性治理专项 不在sql白名单里的需求,具体要求 数量目标: 要求sql慢查询降低, ,各个项目,慢查询每周不能出现超过3个不同类型慢查询sql。 每个数据库的慢查询总数不能查过X哥, 总的慢查询耗时不能超过Ys。 解决效率目标: 项目周期内: 当日提出技术方案,改造完成,提测,并且明确测试时间以及上线时间, sql负责人来R。 项目结束后: 核心功能关联sql:当日提出技术方案,给出明确的排期时间 非核心功能关联sql: 给出明确的排期以及负责人。 现状 当前每日慢查询200左右(不准确统计,待DBA验证),分为如下几类:
- 索引创建不当:
- 无索引
- 未命中索引
- 索引区分度不高
- 关联查询
- 报表类
- 核心功能类
- 非核心功能(不包含报表)
- 数据量过大
- 表中数据超过3000万
- 外部影响
- 其他查询导致数据库性能降低,引发了慢查询
- 其他非业务原因导致的数据库问题,引发慢查询
- 机器的系统升级?
- 网络延迟
- 慢查询日报表(1ms→ 500ms )
- 现阶段人肉维护,希望dba工具化
- 表信息扫码
- 表结构,索引,字段合理性
- 数据量
- sql排查
- 扫描项目中的join, like,。(P1)
- 排查循环调用, 通过sql的调用量排查。(P0)
- 排查sql中的事务, 确认是否有大事务。(P0)
- mapper中的条件组合梳理,一个sql干一类事情(工作量较大P2)
- sql优化类
- 添加索引
- 调整sql, 命中联合索引
- sql拆分,一条拆分成多条
- 批量查询,循环改为批量
- 最小结果集:查询列数最少,查询行数最少
- 缓存,降低sql 查询频次
- 避免大数据集的聚合
- 查询中不能没有where或者条件仅有 1=1
- 数据库优化
- 分库分表
- 是否需要扩容
- 物理隔离
- 业务隔离
- 复杂查询隔离--报表独立从库
- 业务优化
- 业务流程调整,避免或者减少查询
- 流程优化,减少复杂逻辑
- 防止重复提交
- 业务调整,功能的使用频率以及必要性
- dml规范以及review
- 代码review机制,出来规范,
- 监控告警
- 慢查询监控告警
- 数据库服务指标监控告警,
- 主从延迟报警
- 提供按日慢查询统计报表: 邮件和查询工具均可。
- 数据库性能分析工具: 用于日巡检使用。
- cpu
- 内存
- io
- 网络
- qps
- tps
- wps
- 数据延迟情况
- dba支持最大结果集1000限制 (将来要实现)。
- 耗时超过5秒, 自动kill, 同步消息给业务方(未来要实现)。
日期 | 目标 | 备注 |
日期 | 目标 | 备注 |
2019-10-14 |
|
慢查询数据不准确,需要dba更大的支持 大事务目前还不太清晰, 目前仅有钉钉报警 |
2019-10-15 |
|
明天中午提测报表优化 慢查询报表存在问题,需要讨论,应该拉DBA一起讨论 |
2019-10-16 |
|
|
总体 |
|