Python MySQLdb默认关闭autocommit带来的坑

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带来的坑)