set Lock_timeout 1000 不起作用 亚??

redpop 2003-11-19 05:25:42
1client:

use pubs begin tran update titles set price = price * 1.05 where title_id = 'BU2075'

client 2:

select title_id,title,price from titles set Lock_timeout 1000

仍旧 死锁  ,   设置隔离 级别也不行!!!!
...全文
193 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyudi 2004-01-08
  • 打赏
  • 举报
回复
up
redpop 2003-12-26
  • 打赏
  • 举报
回复
在第一个连接中执行查询语句 后, client 2 仍旧 可以 插入 , 更改 数据,


难道 必须使用 serializable 才能够保证不读dirty 数据吗
zhaoloudy 2003-12-25
  • 打赏
  • 举报
回复
先set Lock_timeout 1000
再select title_id,title,price from titles
redpop 2003-12-25
  • 打赏
  • 举报
回复
在第一个连接中执行查询语句 后, client 2 仍旧 可以 插入 , 更改 数据,


难道 必须使用 serializable 才能够保证不读dirty 数据吗
w_rose 2003-12-24
  • 打赏
  • 举报
回复
能不能公布一下楼主的第一条语句需要多长时间执行完?1秒之内还是多于1秒?

第二条语句锁不锁无所谓,关键是第一条语句凭什么运行那么长时间?
redpop 2003-12-24
  • 打赏
  • 举报
回复
多谢 ! 但是 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED , COMMITTED ,

REPEATABLE READ 此3 方法 都 在第一个连接中执行语句 后, client 2 仍旧 可以 插入 , 更改 数据, 难道 必须使用 serializable 才能够保证不读dirty 数据吗
redpop 2003-12-07
  • 打赏
  • 举报
回复
多谢 ! 但是 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED , COMMITTED ,

REPEATABLE READ 此3 方法 都 在第一个连接中执行语句 后, client 2 仍旧 可以 插入 , 更改 数据, 难道 必须使用 serializable 才能够保证不读dirty 数据吗
redpop 2003-11-20
  • 打赏
  • 举报
回复
多谢 ! 但是 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED , COMMITTED ,

REPEATABLE READ 此3 方法 都 在第一个连接中执行语句 后, client 2 仍旧 可以 插入 , 更改 数据, 难道 必须使用 serializable 才能够保证不读dirty 数据吗
pengdali 2003-11-19
  • 打赏
  • 举报
回复
设table1(A,B,C)
A B C
a1 b1 c1
a2 b2 c2
a3 b3 c3

1)排它锁
新建两个连接
在第一个连接中执行以下语句
begin tran
update table1
set A='aa'
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran
在第二个连接中执行以下语句
begin tran
select * from table1
where B='b2'
commit tran

若同时执行上述两个语句,则select查询必须等待update执行完毕才能执行即要等待30秒

2)共享锁
在第一个连接中执行以下语句
begin tran
select * from table1 holdlock -holdlock人为加锁
where B='b2'
waitfor delay '00:00:30' --等待30秒
commit tran

在第二个连接中执行以下语句
begin tran
select A,C from table1
where B='b2'
update table1
set A='aa'
where B='b2'
commit tran

若同时执行上述两个语句,则第二个连接中的select查询可以执行
而update必须等待第一个连接中的共享锁结束后才能执行 即要等待30秒

3)死锁
增设table2(D,E)
D E
d1 e1
d2 e2
在第一个连接中执行以下语句
begin tran
update table1
set A='aa'
where B='b2'
waitfor delay '00:00:30'
update table2
set D='d5'
where E='e1'
commit tran

在第二个连接中执行以下语句
begin tran
update table2
set D='d5'
where E='e1'
waitfor delay '00:00:10'
update table1
set A='aa'
where B='b2'
commit tran

同时执行,系统会检测出死锁,并中止进程
pengdali 2003-11-19
  • 打赏
  • 举报
回复
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

34,875

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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