SQL Server在磁碟資料表(Disk-Base)提供了兩種與快照有關的樂觀鎖定機制: RCSI(Read Committed Snapshot Isolation)及Snapshot Isolation,他們都是減少查詢交易被封鎖的武器之一,當資料被其他交易更新時,這兩種機制都可以透過Tempdb加上row version查詢到資料的前一版,讓交易免於被封鎖(blocked)的命運。明晚要參加SQL Pass,Rico大的主題是進擊的In-Memory OLTP,學習記憶體資料表交易前,先來預習傳統磁碟資料表在這兩種機制下的查詢一致性。
[SQL Server]Read Committed Snapshot Isolation(RCSI)隔離層級的效能副作用
為了減輕查詢交易被大型更新交易封鎖(Blocked),也理解樂觀鎖定(Optimistic Locking)可能的交易衝突後,也許我們會在SQL Server上使用Oracle預設相同的隔離層級: Read Committed Snapshot Isolation(RCSI),她是一種Row Version Base的隔離層級,與snapshot isolation不太相同的是她是單一版本。當交易更新資料時,系統會自動將修改前的版本放到Tempdb提供給可能發生的查詢交易。因為也有搬分頁到其他資料庫的工作會執行,在效能上會不會有明顯的副作用?
[SQL Server][系統資訊收集]SQLDiag.exe(一)啟用SQLProfiler
最近重新和SQLdiag.exe見面,神話傳說中一種以主控台程式或是Windows服務形式來執行的SQL診斷偵測工具,執行檔隨附在SQL Server的安裝目錄BINN之下。她出道的很早,她可以收集Windows相關資源使用、事件紀錄、SQL內的錯誤、封鎖及SQL Profiler可以錄到的資訊,以前認識不深,這次重新認識。
[SQL Server][Deadlock]Intra-Query Parallel Thread Deadlocks初體驗
- 9002
- 0
- SqlDeadlock
星期六晚上沒有想看的球賽,來筆記幾個月前碰到的問題: Intra-Query Parallel Thread Deadlocks,內部平行查詢死結。
[SQL Server][Lock]透過DMV找鎖定的物件、類型以及被誰Blocking
除了打開管理工具中的活動監視器(Activity Monitor)外,來試試幾個動態管理檢視(DMV)的組合(dm_tran_locks x dm_os_waiting_tasks x dm_exec_connections)。
[SQL Server][DeadLock]deadlock_priority 優先升等商務艙
- 1358
- 0
- SqlDeadlock
在繁忙的線上交易資料庫(OLTP)世界裡,當兩個以上Session都在等待存取彼此鎖定的資源時,資料庫就會出現死結而有交易需要被犧牲。就像最近聯合航空強拉旅客下機的事件裡,發生超額訂位且check in後,似乎有航空公司處理的標準;在SQL DataBase Engine中,也有一套選擇下機旅客的標準,只記得會選擇交易復原成本(Cost)較低的犧牲(買促銷票的),有沒有其他要注意的點?
[SQL Server][DeakLock]觀察死結的工具(四)擴充事件(Extended events)
- 10728
- 0
- SqlDeadlock
除了Trace flag及SQL Profiler能野生捕獲DeadLock資訊,在SQL Server 2008開始,也多了一個擴充事件(Extended events)的工具可以幫助我們,到了SQL Server 2016,雖然Trace flag及SQL Profiler都還能運作,但考慮到SQL Profiler對於Server負載的衝擊以及將來SQL產品的支援,我們就是慢慢把系統診斷的工作轉移到擴充事件中嚕~
[SQL Server][DeakLock]觀察死結的工具(三)SQL Profiler
- 13504
- 0
- SqlDeadlock
Profiler是SQL Server 2005開始提供的工具,一直以來都是我們診斷案件錄製SQL內部過程的好幫手,她可以讓我們建立和管理追蹤交易過程,蒐集到資訊後也能直接進行分析並且重新執行追蹤結果,我們來試試看捕捉DeadLock事件。
[SQL Server][DeakLock]觀察死結的工具(二)Trace flag
- 23087
- 0
- SqlDeadlock
- 2017-01-28
Trace flag是老牌但超實用的系統診斷及暫時關閉特定伺服器功能的工具,從SQL Server 2000的前一代SQL 7.0就出道了,
如果想把Deadlock的資訊儲存在SQL Server紀錄檔中,我們可以啟用Trace flag 1222以及1204。
- 1