数据库问题排查

数据库慢查询激增

关键资料

感谢云厂商运维们

方法

  1. 检查查询日志:查看MySQL查询日志,以查看优化后是否有任何查询运行过度。可能优化已更改了查询执行计划,导致某些查询运行速度变慢或消耗更多资源。
  1. 检查优化后的表结构:确保优化后的表结构符合预期,并且没有引入任何意外后果,例如额外的索引或约束可能影响查询性能。
  1. 分析服务器指标:利用诸如tophtop或监控软件等工具来分析服务器的CPU、内存和磁盘使用情况。这可以帮助确定CPU飙升是由MySQL特定引起的还是系统范围内的问题。
  1. 监视MySQL性能:使用MySQL的内置性能监控工具,如SHOW PROCESSLISTSHOW ENGINE INNODB STATUS,以识别任何长时间运行的查询或锁定可能导致CPU飙升的原因。
  1. 审查优化技术:如果使用了特定的优化技术,如添加索引或分区,请确保它们被正确实现,并且对系统的整体性能有所裨益。
  1. 检查资源竞争:确保服务器上没有资源竞争,例如磁盘I/O瓶颈或内存不足,这可能导致CPU使用率增加。
 
 

optimizer table 期间 cpu100%

  1. kill 线程、kill 不掉可以直接重启
  1. 不要在业务运行时间执行,比如白天人多晚上人少,一定要选择晚上
  1. 如果可以选择无锁变更
 

Undo文件过大

  • 由于MVCC机制,MySQL更新表中数据时会生成undo日志,会占用磁盘空间;所有会话的相关事务提交或回滚后,undo日志会被清理,导致磁盘空间下降。
  • 当存在长事务时,长事务只要不提交,其他会话对相关表更新生成的undo就无法清理,导致磁盘空间一直上涨。
系统文件过大主要是由于undo文件过大。当存在对InnoDB表长时间不结束的查询语句,而且在查询过程中表有大量的数据变化时,系统会生成大量的undo信息,占用大量存储空间,导致存储空间耗尽。为避免数据丢失,RDS会自动锁定实例,实例运行状态显示为锁定中
Loading...
文章列表
王小扬博客
云原生
Git
Elasticsearch
Apollo
产品
Think
生活技巧
软件开发
计算机网络
CI
DB
设计
缓存
Docker
Node
操作系统
Java
大前端
Nestjs
其他
PHP
AI