提高SQL SERVER併發能力
從MSDN看到這樣一個解決方案:SET TRANSACTION ISOLATION LEVEL
首先,設定資料庫的事務隔離級別為 只讀快照:READ_COMMITTED_SNAPSHOT
設定READ_COMMITTED_SNAPSHOT隔離模式很簡單,只要我們簡單的一步操作就可以實現。
ALTER DATABASE DATABASE_NAME
SET READ_COMMITTED_SNAPSHOT ON;
READ_COMMITTED_SNAPSHOT的強項在於查詢的時候不會下鎖,影響別的事務操作,而且可以保障查詢的資料滿足絕大多數的精確要求。
這裡牽涉到的另一個問題是,有的更新過程,需要對某些關鍵資料行進行鎖定,以避免重入導致的資料更新錯誤,比如財務帳戶資訊。
比如,在一個儲存過程中,使用TIMESTAMP型別欄位作為行更新的依舊,在快照模式下,就會引發錯誤導致更新失敗。
MSDN提供了一個這樣的解決方案:
當 READ_COMMITTED_SNAPSHOT 資料庫選項設定為 ON 時,您可以使用 READCOMMITTEDLOCK 表提示為 READ COMMITTED 隔離級別上執行的事務中的各語句請求共享鎖,而不是行版本控制。
那我們完全在這種更新事務中,使用如此共享鎖:
READ_COMMITTED_SNAPSHOT的強項在於查詢的時候不會下鎖,影響別的事務操作,而且可以保障查詢的資料滿足絕大多數的精確要求。
這裡牽涉到的另一個問題是,有的更新過程,需要對某些關鍵資料行進行鎖定,以避免重入導致的資料更新錯誤,比如財務帳戶資訊。
比如,在一個儲存過程中,使用TIMESTAMP型別欄位作為行更新的依舊,在快照模式下,就會引發錯誤導致更新失敗。
MSDN提供了一個這樣的解決方案:
當 READ_COMMITTED_SNAPSHOT 資料庫選項設定為 ON 時,您可以使用 READCOMMITTEDLOCK 表提示為 READ COMMITTED 隔離級別上執行的事務中的各語句請求共享鎖,而不是行版本控制。
那我們完全在這種更新事務中,使用如此共享鎖:
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->update A with(READCOMMITTEDLOCK) set CASH= yy_AMT+@M_CAMT where UID = @U_ID and TIME_STAMP=@TS;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-679380/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 程式內快取助你提高併發能力!快取
- 如何提高伺服器的併發處理能力?硬核!伺服器
- 利用sql_trace提高自學能力SQL
- 建立索引——提高SQL Server效能索引SQLServer
- 提高自身Java開發能力的方法?Java
- 使用C#和MemoryCache元件實現輪流呼叫APIKey以提高併發能力C#元件API
- SQL Server 2005 管理併發資料訪問[zt]SQLServer
- SQL Server 如何合併組內字串SQLServer字串
- 如何充分發揮 SQL 能力?SQL
- 利用索引提高SQL Server資料處理的效率索引SQLServer
- 巧用連線請求和調查SQL Server的提高SQLServer
- SQL Server 觸發器SQLServer觸發器
- SQL Server觸發器SQLServer觸發器
- 如何提升伺服器的高併發能力伺服器
- 聊聊sql的併發updateSQL
- sql-server觸發器SQLServer觸發器
- Sql Server系列:觸發器SQLServer觸發器
- 提高SQL Server安全性的一些建議(1)SQLServer
- 十個步驟提高 SQL Server 安裝的安全性SQLServer
- 巧用SET選項提高SQL Server客戶端的靈活性SQLServer客戶端
- 多人協同開發,git workflow 提高團隊協作能力Git
- 程式設計目標:開發人員如何提高能力程式設計
- SQL Server:觸發器詳解SQLServer觸發器
- 利用SQL Server發郵件 (轉)SQLServer
- 提高SQL效能SQL
- SQL Server中合併使用者日誌表的方法SQLServer
- MS SQL Server資料庫中合併複製詳解SQLServer資料庫
- Socket Server的N種併發模型彙總Server模型
- Socket Server 的 N 種併發模型彙總Server模型
- 程式設計師如何提高抽象能力程式設計師抽象
- 【SQL Server】-- 一觸即發之觸發器SQLServer觸發器
- SQL Server 觸發器詳情HOPPSQLServer觸發器
- SQL server觸發器簡單示例SQLServer觸發器
- SQL server 與Oracle開發比較SQLServerOracle
- 如何禁止 SQL Server 中的 xp_cmdshell 以提高安全性SQLServer
- 【能力提升】SQL Server常見問題介紹及快速解決建議SQLServer
- SQL in ORACLE and SQL ServerSQLOracleServer
- sql ServerSQLServer