autocommit=0引起的业务hang住
来源:互联网 发布:多益网络运营笔试题 编辑:程序博客网 时间:2024/04/30 02:26
在网上看了篇文章,不过感觉他的实验有些问题,自己重新测试了下,记录一下
session1 建表并插入数据:
create table if not exists t(id int primary key, c int);
set autocommit=0;
insert into t values(1,1);
insert into t values(2,2);
insert into t values(3,3);
commit;
select count(*) from t;
维持session1不断,新建一个连接session2,执行 alter table t add column name varchar(20);
此时该语句处于等待状态.
create table if not exists t(id int primary key, c int);
set autocommit=0;
insert into t values(1,1);
insert into t values(2,2);
insert into t values(3,3);
commit;
select count(*) from t;
维持session1不断,新建一个连接session2,执行 alter table t add column name varchar(20);
此时该语句处于等待状态.
MySQL Tips: set autocommit=0是将本线程设置为非自动提交模式。在每个事务结束后,下个语句开始时自动新建一个事务。
这就意味着,session1最后的那个select count(*)操作,实际上之前隐含了一个begin操作。由于该事务没有提交,因此session1持有表t的MDL读锁。因此对于业务方的建议就是,及时提交这些读事务,或断开连接。
MySQL Tips: 连接断开时,MySQL会自动回滚当前未提交的事务。由于本case里面session1的最后一个事务只是一个select语句,因此回滚不影响业务。
0 0
- autocommit=0引起的业务hang住
- 误用autocommit引起的业务hang住
- 误用autocommit引起的业务hang住
- ARCH wait on ATTACH等待事件引起的切换归档hang住
- 事务处理 set autocommit = 0
- mysql中的set autocommit =0
- mysql的autocommit
- mysql的autocommit详解
- Hibernate的autocommit问题
- latch:library cache 引起的数据库短暂hang(BUG 7122093)
- autocommit
- Oracle 配监听 hang 住的问题
- 重现Oracle数据库Hang住的情况
- 如何处理HANG住的DB
- 因为numa引发的mysqldump hang住
- oracle 11g 多次业务用户被锁定 library cache lock导致数据hang住问题解决
- mysql中set autocommit=0与start transaction区别
- mysql中set autocommit=0与start transaction区别
- Core Animation - 2
- centos6安装eclipse
- OC基础回顾(一)Objective-C是对C语言的扩展
- 需求分析说明书和需求规格说明书
- OC基础之----NSDictionnary
- autocommit=0引起的业务hang住
- C语言strcasecmp()函数:判断字符串是否相等(忽略大小写)
- Binder机制解析(一)
- android studio配置AndroidAnnotations
- linux的sar命令
- 2012年5月SAT香港真题解析
- IllegalArgumentException: MALFORMED
- 杭电 hdu 1215 七夕节 (筛选法) 水题
- 2015暑假训练题解(二分)