發表文章

目前顯示的是 11月, 2007的文章

TRANSACTION ISOLATION vs LOCK

話說SQL server有支援下列幾種隔離模式 READ UNCOMMITTED READ COMMITTED REPEATABLE READ SNAPSHOT(2005新增) SERIALIZABLE 當中READ COMMITTED為內定所採用的模式。內定採用這樣的模式是好?是壞?見仁見智吧~不過,有時還真的是需要READ UNCOMMITTED模式。所以做個測試,著手把connection的模式修改為READ UNCOMMITTED模式… 在ASP中的作法如下… db.IsolationLevel = adXactReadUncommitted 或者 db.IsolationLevel = 256 修改好後,跑個ASP來測試,卻發結果並非我所想像,依舊因為LOCK問題,導致程式卡在那兒~ (我在 SQL Server Management Studio Express上直接下 SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED ,結果卻是我所預期--不會受到 lock影響,依舊可以抓到資料) select * from [test_table] 於是,只好到google上找找資料,看看為何設定後卻無效果~說法千奇百怪…結果,還是在 MS官方資料 上看到一句很關鍵的話,照者測試的結果,果真有效… 程式修改如下 db.BeginTrans() select * from [test_table] db.RollBackTrans 不過,這樣感覺有點脫褲子放屁…看來,以後還是直接用下列方式就好了… select * from [test_table] WITH (NOLOCK)