Chinaunix首页 | 论坛 | 博客
  • 博客访问: 837972
  • 博文数量: 182
  • 博客积分: 1992
  • 博客等级: 上尉
  • 技术积分: 1766
  • 用 户 组: 普通用户
  • 注册时间: 2010-10-18 11:49
文章分类

全部博文(182)

文章存档

2019年(1)

2016年(5)

2015年(29)

2014年(38)

2013年(21)

2012年(36)

2011年(52)

我的朋友

分类: Mysql/postgreSQL

2015-11-11 17:09:55

1、select for update对row进行锁时,是对不同的connection,如果是同一个connnection那没作用。
例子:
1、用同一个mysql client 执行
select id from table_1 where id=1 for update;          select id from table_1 where id=1 for update;
                                                                           update id=3;
这不会锁,最后一个update会是最新数据

2、用两个mysql client 执行
select id from table_1 where id=1 for update;          select id from table_1 where id=1 for update;
                                                                           waiting....
第二个查询会block,直到第一个commit完成。

不过锁定(Lock)的数据是判别就得要注意一下了。由于InnoDB 预设是Row-Level Lock,所以只有「明确」的指定主键,MySQL 才会执行Row lock (只锁住被选取的数据) ,否则MySQL 将会执行Table Lock (将整个数据表单给锁住)。
阅读(735) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~