前提
一个平常的工作日,系统出现大量502. 下面是该问题的排查过程。
查询该问题,进行复盘。
问题分析
当时给partner_XXX表 加索引,
|
partner_XXX表,线上数据 4W, 空间25M,理论加索引时间,小于1s
是什么造成卡住的,查看阿里云 自治服务-> 一键诊断 > 自治中心->事务和锁快照 部分,如下图发现:
加索引的语句,在等待元数据锁,被一个没有任何执行语句的幽灵事务卡主了。
幽灵事务的产生
IDEA 社区版本,Database Navigator 插件
多次执行show index,操作,并查看返回结果中的数据时,会开启事务,如下图
问题总结
首先,IDEA 社区版本,Database Navigator 插件,调用show index 语句,开启了 事务,没有提交,持有了metadata lock。
其次,ALTER TABLE `partner_XXX` ADD INDEX `idx_point_id` (`point_id`);
由于数据库是1核1G
ALTER TABLE 语句卡主其他查询,造成服务连接不上数据库
解决办法
- IDEA 社区版本,Database Navigator 插件,开启自动提交
- 稳妥起见,加索引,业务低峰期进行。