性能资源类 排查思路: 1. 因为其他只读节点磁盘占用空间正常,且是偶尔出现,说明该实例磁盘占用高,与承载的业务相关。 2. 获取该实例的慢日志,分析磁盘占用高期间,是否有对应的慢SQL。 3. 如果有慢SQL,执行 explain [慢SQL语句] ,分析相应慢SQL语句。 4. 观察explain语句输出的extra列,是否有using temporary、using filesort,如果有,说明该语句用到了临时表或临时文件,数据量大的情况下,会导致磁盘占用高。 解决方案 1. 复杂查询语句导致磁盘打满,建议客户从业务侧优化响应查询语句,常见优化措施: 加上合适的索引。 在where条件中过滤更多的数据。 重写SQL,优化执行计划。 如果不得不使用临时表,那么一定要减少并发度。 2. 临时规避措施:考虑业务侧优化复杂查询语句需要一定时间,可以通过临时扩容磁盘空间规避。 业务死锁导致响应变慢 场景描述 14点~15点之间数据库出现大量行锁冲突,内核中大量update/insert会话在等待行锁释放,导致CPU使用率达到70%左右,数据库操作变慢。 查看CES指标行锁等待个数、MDL锁数量,下图仅供参考: 发生死锁的表: 1. row Table: tabletest Create Table: CREATE TABLE tabletest( ... CONSTRAINT actfkexeparent FOREIGN KEY (parentid) REFERENCES actruexecution (id) ON DELETE CASCADE, CONSTRAINT actfkexeprocdef FOREIGN KEY (procdefid) REFERENCES actreprocdef (id), CONSTRAINT actfkexeprocinst FOREIGN KEY (procinstid) REFERENCES actruexecution (id) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT actfkexesuper FOREIGN KEY (superexec) REFERENCES actruexecution (id) ON DELETE CASCADE ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4bin