B:
与服务器交互,按各种情况不同,去管理表内容,SELECT 一些内容等等,
程序卡在这里初始化的其中一步
SQLCommand = "ALTER TABLE `procLog` AUTO_INCREMENT = 0"
SQLWriteData(sqlserverInfo,SQLCommand)
测试过,
SQLCommand 凡是 ALTER 管理表的操作,都会阻塞等待服务器,看交互过程,cat /var/log/mysqld.log ,一点儿异常问题 warnning 什么的,都没有
my.cnf 都已经是用默认的了
在执行上面代码那一段的时候,A 已经写入了 40 多条数据了,不知道是否 A 的量,会导致 B 的阻塞?
但如果单独把上面的代码取出,作为单独步骤操作,又没有异常,不会阻塞
各位大哥,救救,如果情况的表达还是很模糊,请教教我还有一些什么思路,这一步,到底还可以怎么再往下看问题所在?
先谢谢了,不跟帖逐一回感谢的话了。。。
1
qazwsxkevin OP 嗯? 好像是有些符号影响了 markdown 的排版效果? 不过没关系,应该不影响阅读
|
2
zmal 2022-03-26 00:07:05 +08:00 via iPhone
A 里有长事务,alter 在等锁?
话说你驱动更新了吗。 |
3
awolf 2022-03-26 00:07:24 +08:00
看看默認事務隔離策略是否有變更
|
4
rekulas 2022-03-31 18:44:15 +08:00
阻塞的时候查查进程,重点排查 wait for metadata lock 状态的,看是否有链接占用了锁又没执行
|
5
qazwsxkevin OP 经过多天折腾,缺失是有些 ALERT 命令造成了锁表,现在重写的很多 DDL,DML ,基本上算是找到原因,解决了问题,谢谢大家
|