免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2425 | 回复: 6
打印 上一主题 下一主题

关于锁的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-13 20:30 |只看该作者 |倒序浏览
请问运行一条sql语句

像: update table_name set column_1 = 12

或者:
     select * from table_name

这些语句的时候,sybase会不会对该条 record 加锁的呢

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
2 [报告]
发表于 2009-03-14 13:36 |只看该作者
原帖由 xiechunlu 于 2009-3-13 20:30 发表
请问运行一条sql语句

像: update table_name set column_1 = 12

或者:
     select * from table_name

这些语句的时候,sybase会不会对该条 record 加锁的呢


select 的时候不会

update 的时候有可能会锁,也可能不会锁。

锁的机制是在建表的时候指定的,同时用于行级锁的表,必须建立唯一性索引或主键。

论坛徽章:
0
3 [报告]
发表于 2009-03-15 13:31 |只看该作者
select会在相关数据上持有share lock,根据不同的数据访问程度,可能会是row lock、page lock或者table lock。
update会在相关数据上持有exclusive lock.

论坛徽章:
0
4 [报告]
发表于 2009-03-15 22:01 |只看该作者
原帖由 sybase软件服务 于 2009-3-15 13:31 发表
select会在相关数据上持有share lock,根据不同的数据访问程度,可能会是row lock、page lock或者table lock。
update会在相关数据上持有exclusive lock.


无论什么隔离度,select都会持有share lock ,update都会持有exclusive lock吗?

无论隔离度是0,1,或者2,3 吗

论坛徽章:
0
5 [报告]
发表于 2009-03-15 23:50 |只看该作者
原帖由 xiechunlu 于 2009-3-15 22:01 发表


无论什么隔离度,select都会持有share lock ,update都会持有exclusive lock吗?

无论隔离度是0,1,或者2,3 吗



不一定了,产生脏读就是因为在select的时候进行了update,产生更新丢失就是在update的时候另一个update起了作用。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2009-03-16 22:31 |只看该作者
原帖由 sybase软件服务 于 2009-3-15 13:31 发表
select会在相关数据上持有share lock,根据不同的数据访问程度,可能会是row lock、page lock或者table lock。
update会在相关数据上持有exclusive lock.



这也不一定,

select 的时候可以指定 for update ,这个时候就是独占锁。

关键在于建表的时候指定的锁的机制 。。。

论坛徽章:
0
7 [报告]
发表于 2009-03-17 11:16 |只看该作者

回复 #4 xiechunlu 的帖子

哪个操作都会有锁,问题是锁的持续期有多久。
如果在transaction里,要看在哪个隔离级别才能决定
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP