使用wiht(nolock)有利也有弊,所以在決定使用之前,你一定需要了解清楚with(nolock)的功能和缺陷,看其是否適合你的業務需求,不要覺得它能提公升效能,稀里糊塗的就使用它。
--事務未提交回滾
begin
tran
update dbo.student set ca=
'6666
'where no=0--
commit
--rollback
--同乙個查詢框,不會死鎖
select
*from dbo.student as s
--新開視窗查詢會死鎖
-查詢哪個表鎖了
select
request_session_id spid,
object_name
(resource_associated_entity_id
) tablename
from
sys.dm_tran_locks
where
resource_type ='
object
'order
by request_session_id asc
--鎖詳細資訊
sp_lock 57
--鎖詳細資訊
新的視窗,使用with(nolock)就不會死鎖,但會把可能回滾的資料查詢出來
Synchronize讀髒解決
對於業務需要同步的 同時,新增synchronize關鍵字 比如,在getvalue setvalue方法上 都加上synchronize關鍵字 保證,業務的一致性 package com.bjsxt.base.sync004 業務整體需要使用完整的synchronized,保持業務的原子性。pub...
髒讀,不可重複的讀,虛讀
引用 髒讀dirty reads 當事務讀取還未被提交的資料時,就會發生這種事件。舉例來說 transaction 1 修改了一行資料,然後 transaction 2 在 transaction 1 還未提交修改操作之前讀取了被修改的行。如果 transaction 1 回滾了修改操作,那麼 tr...
髒讀,不可重複的讀,虛讀
引用 髒讀dirty reads 當事務讀取還未被提交的資料時,就會發生這種事件。舉例來說 transaction 1 修改了一行資料,然後 transaction 2 在 transaction 1 還未提交修改操作之前讀取了被修改的行。如果 transaction 1 回滾了修改操作,那麼 tr...