你可以选择:
select count(*) from TestTrans with(nolock)
select count(*) from TestTrans with(readpast)
select count(*) from TestTrans with(nolock)
select count(*) from TestTrans with(readpast)
调试欢乐多
在新的进程里的update TestTrans set contactname='aa' where testid=xx --xx非9或insert into TestTrans
(testid, contactname, contactage) values (12, 'contact46', '32')都不需要等待.
用with(nolock)会出现不可重复读现象. 因此with(readpast)锁定提示是不错的选择.非常感谢!
SQL SERVER 事务隔离级别 默认是READ COMMITTED,你查询时,要读取当前已经递交的事务,
所以select (*) 一直在等待前一个事务递交你直接用
select count(*) from TestTrans with(nolock)
select count(*) from TestTrans with(readpast)
统计不会包括9这条数据
查询了<SQL Server2000技术内幕>, 没有找到合理的说明.这个问题确实有点费解, 在READ COMMITTED这个事务等级上, 前一个事务正在进行中还没有提交, 那么count根本
不需要等到锁的释放啊, 直接返回那个事务开始前的记录数不就行了???我认为, MySQL(InnoDB)那样的锁定才是合理的.
应为就一个page页哦!
想测试,多加点数据,把数据加过一页,然后在insert 就不是表锁了