目前情况:
因为对 MySQL 完全不懂,目前也几乎能断定就是 MySQL 服务器执行目录有问题
Python 写的程序,以前在 CentOS6 自带的 MySQL5.1 上一直都是跑得稳稳的
最近因为要使用 JSON 数据和一些其它新特性,所以干脆搞了个测试环境,一步到位 MySQL8.0.28 先试试,
编译装上 MySQL8.0 后,跑了几步初始化就阻塞了,开始还以为是.28 版本有问题,就从.27 一直降到.12 都是这样,
才回头看,似乎是写的 MySQL 命令出了毛病
(期间也装过 5.7 ,也是同样情况)
代码篇幅无法在这里给出,
Python 与 MySQL 交互逻辑大概是这样:分 A 和 B 两个方面
A:
SQL 消息队列处理(Python 多进程+多线程),使用 Python 的 PoolDB 线程池,执行的指令只有 INSERT INTO,UPDATE,DELETE 三大类,
处理队列机制收到程序消息,就转换成 MySQL 命令,怼服务器
这个部分很 OK ,单独在 8.0 上测试过,增减删没有问题
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 的阻塞?
但如果单独把上面的代码取出,作为单独步骤操作,又没有异常,不会阻塞
各位大哥,救救,如果情况的表达还是很模糊,请教教我还有一些什么思路,这一步,到底还可以怎么再往下看问题所在?
先谢谢了,不跟帖逐一回感谢的话了。。。