python MYSQLdb 默认关闭 autocommit,任意执行一个 select * from user 语句,对于 MYSQL 5.5 以上的版本,都会造成 METADATA LOCK 阻塞。如下
select * from user;
alter table user ......; -- 阻塞 METADATA LOCK
select * from user; -- 阻塞 METADATA LOCK
结论:
-
select /update /delete 都会作为事务,事务就会出发 METADATA LOCK
-
alter table 也会申请 METADATA LOCK,但是会立即释放
这是python的Mysqldb库默认的事务形式触发执行机制的结果,默认关闭了autocommit所以执行会有未提交事务导致锁表

本文深入探讨了使用Python的MYSQLdb库时,由于默认关闭autocommit特性,如何引起METADATALOCK阻塞的问题。揭示了select、update、delete操作及alter table指令如何触发事务并导致锁表现象。
4万+

被折叠的 条评论
为什么被折叠?



