mysql锁表测试

我将表信息。和执行过程列下、方便大伙测试。

SQL code
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
DROP  TABLE  IF EXISTS  bpm_pro_status ;
CREATE  TABLE   bpm_pro_status  (
    ID   bigint (20)  NOT  NULL  COMMENT  '主键' ,
    ACTINSTID   bigint (20)  DEFAULT  NULL  COMMENT  '流程实例ID' ,
    NODEID   varchar (64)  DEFAULT  NULL  COMMENT  '节点ID' ,
    NODENAME   varchar (255)  DEFAULT  NULL  COMMENT  '节点名称' ,
    STATUS   smallint (6)  DEFAULT  NULL  COMMENT  '状态' ,
    LASTUPDATETIME  datetime  DEFAULT  NULL  COMMENT  '最后更新时间' ,
    ACTDEFID   varchar (64)  DEFAULT  NULL  COMMENT  'ACT流程定义ID' ,
    DEFID   bigint (20)  DEFAULT  NULL  COMMENT  '流程定义ID' ,
   PRIMARY  KEY  ( ID ),
   KEY   IDX_BPMPROSTATUS_INSTNODEID  ( ACTINSTID , NODEID ),
   KEY   ACTINSTID  ( ACTINSTID )
) ENGINE=InnoDB  DEFAULT  CHARSET=utf8 COMMENT= '流程节点状态' ;


Session A
SQL code
?
1
2
3
4
set  autocommit = 0
delete  from  bpm_pro_status;  COMMIT ;
INSERT  INTO  bpm_pro_status  VALUES  ( '1' '1' 'UserTask1' '用户任务1' '-1' '2015-11-12 00:00:00' 'test1:1:10000000490026' '0' );
update  bpm_pro_status  set  `STATUS` = 0  where  ACTINSTID =  '2'  and  NODEID =  'UserTask1'


Session B 
SQL code
?
1
2
set  autocommit = 0
INSERT  INTO  bpm_pro_status  VALUES  ( '2' '2' 'UserTask1' '用户任务1' '-1' '2015-11-12 00:00:00' 'test1:1:10000000490026' '0' );



SELECT @@global.tx_isolation;   
REPEATABLE-READ


数据库隔离级别为REPEATABLE-READ时候,session B无法插入,说明锁表而非锁索引actinstId,nodeId  

修改数据库隔离级别(切记修改隔离级别后需要重新打开会话)
SET global  TRANSACTION ISOLATION LEVEL  READ COMMITTED

此时在进行上面操作。则锁的是索引而不是表

mysql5.0 版本即便READ COMMITTED 也依然会锁。


目前还有一个地方锁表。还没找到原因
有张表,外键级联删除过,再添加行。则会锁表。


原文地址:http://bbs.csdn.net/topics/391858208?page=1



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值