数据库问题排查
关键资料
感谢云厂商运维们
方法
- 检查查询日志:查看MySQL查询日志,以查看优化后是否有任何查询运行过度。可能优化已更改了查询执行计划,导致某些查询运行速度变慢或消耗更多资源。
- 检查优化后的表结构:确保优化后的表结构符合预期,并且没有引入任何意外后果,例如额外的索引或约束可能影响查询性能。
- 分析服务器指标:利用诸如
top
、htop
或监控软件等工具来分析服务器的CPU、内存和磁盘使用情况。这可以帮助确定CPU飙升是由MySQL特定引起的还是系统范围内的问题。
- 监视MySQL性能:使用MySQL的内置性能监控工具,如
SHOW PROCESSLIST
和SHOW ENGINE INNODB STATUS
,以识别任何长时间运行的查询或锁定可能导致CPU飙升的原因。
- 审查优化技术:如果使用了特定的优化技术,如添加索引或分区,请确保它们被正确实现,并且对系统的整体性能有所裨益。
- 检查资源竞争:确保服务器上没有资源竞争,例如磁盘I/O瓶颈或内存不足,这可能导致CPU使用率增加。
optimizer table 期间 cpu100%
- kill 线程、kill 不掉可以直接重启
- 不要在业务运行时间执行,比如白天人多晚上人少,一定要选择晚上
- 如果可以选择无锁变更
Undo文件过大
- 由于MVCC机制,MySQL更新表中数据时会生成undo日志,会占用磁盘空间;所有会话的相关事务提交或回滚后,undo日志会被清理,导致磁盘空间下降。
- 当存在长事务时,长事务只要不提交,其他会话对相关表更新生成的undo就无法清理,导致磁盘空间一直上涨。
系统文件过大主要是由于undo文件过大。当存在对InnoDB表长时间不结束的查询语句,而且在查询过程中表有大量的数据变化时,系统会生成大量的undo信息,占用大量存储空间,导致存储空间耗尽。为避免数据丢失,RDS会自动锁定实例,实例运行状态显示为锁定中。
Loading...