› MySQL 5.5 Community Server
› MySQL 5.6 Community Server
› Percona Configuration Wizard
› XtraBackup 搭建主从复制
Great Sites on MySQL
› Percona
› MySQL Performance Blog
› Severalnines
推荐管理工具
› Sequel Pro
› phpMyAdmin
推荐书目
› MySQL Cookbook
MySQL 相关项目
› MariaDB
› Drizzle
参考文档
› http://mysql-python.sourceforge.net/MySQLdb.html
qazwsxkevin
V2EX  ›  MySQL

Python 使用 MySQL,从 5.1 升级到 8.0, ALERT 有些命令,会卡(锁)死阻塞?

  •  
  •   qazwsxkevin · Mar 25, 2022 · 2379 views
    This topic created in 1645 days ago, the information mentioned may be changed or developed.

    目前情况:
    因为对 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 的阻塞?

    但如果单独把上面的代码取出,作为单独步骤操作,又没有异常,不会阻塞

    各位大哥,救救,如果情况的表达还是很模糊,请教教我还有一些什么思路,这一步,到底还可以怎么再往下看问题所在?
    先谢谢了,不跟帖逐一回感谢的话了。。。

    5 replies  •  2022-04-01 18:37:40 +08:00
    qazwsxkevin
        1
    qazwsxkevin  
    OP
       Mar 25, 2022
    嗯? 好像是有些符号影响了 markdown 的排版效果? 不过没关系,应该不影响阅读
    zmal
        2
    zmal  
       Mar 26, 2022 via iPhone
    A 里有长事务,alter 在等锁?
    话说你驱动更新了吗。
    awolf
        3
    awolf  
       Mar 26, 2022
    看看默認事務隔離策略是否有變更
    rekulas
        4
    rekulas  
       Mar 31, 2022
    阻塞的时候查查进程,重点排查 wait for metadata lock 状态的,看是否有链接占用了锁又没执行
    qazwsxkevin
        5
    qazwsxkevin  
    OP
       Apr 1, 2022
    经过多天折腾,缺失是有些 ALERT 命令造成了锁表,现在重写的很多 DDL,DML ,基本上算是找到原因,解决了问题,谢谢大家
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2623 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 15:17 · PVG 23:17 · LAX 08:17 · JFK 11:17
    ♥ Do have faith in what you're doing.