如何给数据表添加UIX锁

新鲜鱼排 2012-06-25 12:34:17
希望产生下面的效果,在网上找关于产生UIX锁的方法,一直不得要领,希望高手指点。谢谢。
resource_type request_mode request_type
OBJECT UIX LOCK

...全文
187 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
杰拉尔 2012-06-26
  • 打赏
  • 举报
回复
好比说你从钱包里想拿一百块钱买吃的才发现钱让别人捡去了,这时你要去向别人要。这种情况发生,不知道我理解的对不对。
新鲜鱼排 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]
应该不能通过事务层的操作来block住U锁吧..
两个事务只有一个能获得U锁,另一个只能release S锁,于是另一个事务获得的U升级为X。这两个操作都不能够被事务级的操作阻塞住吧。
好奇lz想看U锁的目的是什么。
[/Quote]

其实我的目的很简单,既然SQLServer提供UIX锁,我就是想测试一下如何能够产生UIX。
新鲜鱼排 2012-06-26
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
好比说你从钱包里想拿一百块钱买吃的才发现钱让别人捡去了,这时你要去向别人要。这种情况发生,不知道我理解的对不对。
[/Quote]

兄弟是在说关于数据库锁的机制么?
--小F-- 2012-06-25
  • 打赏
  • 举报
回复
共享意向锁。
mayuanf 2012-06-25
  • 打赏
  • 举报
回复
应该不能通过事务层的操作来block住U锁吧..
两个事务只有一个能获得U锁,另一个只能release S锁,于是另一个事务获得的U升级为X。这两个操作都不能够被事务级的操作阻塞住吧。
好奇lz想看U锁的目的是什么。
新鲜鱼排 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
UIX可以理解成一种转换锁定,并不是由SQLSERVER直接申请的,是由一种模式向另一种模式转换时中间状态。所以难弄。
[/Quote]
完全的同意,比如下面这个数据表,里面包含超过3百万的数据。我对非索引列进行更新会产生Page级别的更新锁,但是表级别就是排它锁。很无奈,自己是想看看什么情况下出现UIX。


CREATE TABLE [dbo].[bigtable](
[col1] [int] NOT NULL,
[col2] [varchar](50) NOT NULL,
[keycol] [int] IDENTITY(1,1) NOT NULL
) ON [PRIMARY]



SET TRANSACTION ISOLATION LEVEL REPEATABLE READ
BEGIN TRAN
UPDATE bigtable SET col1 = 0 WHERE col2 = 'B';

--Monitoring the locks
-- STEP2: Monitoring the sys.dm_tran_locks view by using %%lockres%%
SELECT resource_description, resource_type, resource_associated_entity_id, request_mode
FROM sys.dm_tran_locks WHERE request_session_id = @@SPID


resource_type request_mode
DATABASE S
OBJECT X
PAGE U
--小F-- 2012-06-25
  • 打赏
  • 举报
回复
UIX可以理解成一种转换锁定,并不是由SQLSERVER直接申请的,是由一种模式向另一种模式转换时中间状态。所以难弄。
--小F-- 2012-06-25
  • 打赏
  • 举报
回复
你想产生更新锁?、

SQL Server 使用更新锁适用于任何需要在进行实际修改之前搜索数据的数据修改操作。这样的操作包括受限更新及删除,也包括在带有聚集索引的表上进行的插入操作。
新鲜鱼排 2012-06-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
关注,之前看到过UIX的锁,但很快就升级为排他锁了IX。没有能驻留住。
不知有无方法可驻留UIX状态.
[/Quote]

兄弟说得没错。我一直没有办法给数据表加上Update锁,所以就没法升级成UIX。
Mr_Nice 2012-06-25
  • 打赏
  • 举报
回复
关注,之前看到过UIX的锁,但很快就升级为排他锁了IX。没有能驻留住。
不知有无方法可驻留UIX状态.
新鲜鱼排 2012-06-25
  • 打赏
  • 举报
回复
有没有兄弟知道?
新鲜鱼排 2012-06-25
  • 打赏
  • 举报
回复
谢谢fredrickhu
我要的是更新意向锁,应该不是共享吧。

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧