第十六章——處理鎖、阻塞和死鎖(2)——偵測阻塞和阻塞查詢
前言:
如果一個事務正在等待一些給其他事務鎖定的資源。這個事務就被成為“被阻塞的事務”。反過來,引起阻塞的事務,也就是鎖定資源並造成其他事務等待的事務叫做“正在阻塞的事務”。
長時間執行事務會阻塞其他事務和查詢,使他們等待長時間。在繁重的系統中,很多時候我們會遇到阻塞問題,如果一個事務因為阻塞未完成。會造成一些列的等待鏈。
本文將介紹如何發現並馬上解決這方面的問題。
準備工作:
本例依舊使用SQLServer2012上的AdventureWorks2012資料庫。
步驟:
1、 連到SQLServer2012的AdventureWorks2012資料庫。
2、 新建視窗並輸入:
USE AdventureWorks2012 GO SET TRANSACTION ISOLATION LEVEL REPEATABLE READ GO --開啟事務 BEGIN TRANSACTION --獲取會話ID SELECT @@SPID AS Connection1_SessionID SELECT * FROM Sales.SalesOrderDetail WHERE SalesOrderDetailID = 121316
3、 執行完之後,截圖如下:
4、 新開另外一個視窗,輸入下面程式碼去開啟另外一個事務,留意UPDATE語句,將不會執行,因為在等待第二步中的事務:
USE AdventureWorks2012
GO
--開啟事務
BEGIN TRANSACTION
UPDATE Sales.SalesOrderDetail
SET OrderQty = 10
WHERE SalesOrderDetailID = 121316
COMMIT TRANSACTION
5、 再開啟一個事務,輸入以下程式碼查詢被阻塞和正在阻塞的查詢:
SELECT R.session_id AS BlockedSessionID , S.session_id AS BlockingSessionID , Q1.text AS BlockedSession_TSQL , Q2.text AS BlockingSession_TSQL , C1.most_recent_sql_handle AS BlockedSession_SQLHandle , C2.most_recent_sql_handle AS BlockingSession_SQLHandle , S.original_login_name AS BlockingSession_LoginName , S.program_name AS BlockingSession_ApplicationName , S.host_name AS BlockingSession_HostName FROM sys.dm_exec_requests AS R INNER JOIN sys.dm_exec_sessions AS S ON R.blocking_session_id = S.session_id INNER JOIN sys.dm_exec_connections AS C1 ON R.session_id = C1.most_recent_session_id INNER JOIN sys.dm_exec_connections AS C2 ON S.session_id = C2.most_recent_session_id CROSS APPLY sys.dm_exec_sql_text(C1.most_recent_sql_handle) AS Q1 CROSS APPLY sys.dm_exec_sql_text(C2.most_recent_sql_handle) AS Q2
6、 因為第一個連線佔用了資源,阻塞了其他事務,所以這裡要結束這個程序:
KILL 68
GO
7、 換回第二個查詢介面,發現update操作已經成功完成。上面的程序號根據不同機器而定。
分析:
在本例中,把事務隔離級別設為REPEATABLE READ,因為在這個隔離級別中,在資源上的共享鎖將持續到事務完成。所以當從表中查詢資料是,該值上會加上共享鎖。在事務提交或回滾前不會釋放。
當執行第二個連線的update語句時,不能完成,因為被第一個事務阻塞了,且在REPEATABLE READ下共享鎖不釋放。
為了標識阻塞和被阻塞的請求,需要用到下面的DMO:
1、 dm_exec_requests
2、 dm_exec_sessions
3、 dm_exec_connections
4、 dm_exec_sql_text
相關推薦
第十六章——處理鎖、阻塞和死鎖(2)——偵測阻塞和阻塞查詢
前言: 如果一個事務正在等待一些給其他事務鎖定的資源。這個事務就被成為“被阻塞的事務”。反過來,引起阻塞的事務,也就是鎖定資源並造成其他事務等待的事務叫做“正在阻塞的事務”。 長時間執行事務會阻塞其他事務和查詢,使他們等待長時間。在繁重的系統中,很多時候我們會遇到阻塞問題,
處理鎖、阻塞和死鎖(2)——偵測阻塞和阻塞查詢
前言: 如果一個事務正在等待一些給其他事務鎖定的資源。這個事務就被成為“被阻塞的事務”。反過來,引起阻塞的事務,也就是鎖定資源並造成其他事務等待的事務叫做“正在阻塞的事務”。 長時間執行事務會阻塞其他事務和查詢,使他們等待長時間。在繁重的系統中,很多時候我們會遇到阻塞問題,如果一個事務因為阻塞未完成。會造成
斯坦福大學-自然語言處理入門 筆記 第十一課 最大熵模型與判別模型(2)
一、最大熵模型 1、模型介紹 基本思想:我們希望資料是均勻分佈的,除非我們有其他的限制條件讓給我們相信資料不是均勻分佈的。均勻分佈代表高熵(high entropy)。所以,最大熵模型的基本思想就是我們要找的分佈是滿足我們限制條件下,同時熵最高的分佈。 熵:表示分佈的不
跟我學SpringCloud | 第十六篇:微服務利劍之APM平臺(二)Pinpoint
目錄 SpringCloud系列教程 | 第十六篇:微服務利劍之APM平臺(二)Pinpoint 1. Pinpoint概述 2. Pinpoint主要特性 3. Pinpoint優勢 4.
第十二週專案3 - 圖遍歷演算法實現(2)
/*Copyright (c) 2015, 煙臺大學計算機與控制工程學院 * All rights reserved. * 檔名稱:H1.cpp * 作者:辛志勐 * 完成日期:2015年11月23日 * 版本號:VC6.0 * 問題描述:廣度優先遍歷——BFS * 輸入描述:無 * 程式輸出:圖的
第十一週 專案1 二叉樹構造演算法(2)
問題描述及程式碼: /* copyright (t) 2016,煙臺大學計算機學院 *All rights reserved. *檔名稱:00.cpp *作者:白曉娟 *完成日期:2016年11月17日 *版本號;v1.0 *問題描述:由先序序列和中序
“全棧2019”Java第十四章:二進位制、八進位制、十六進位制
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第十四章:二進位制、八進位制、十六進位制 下一章 “全棧2019”Java第十五章:Unic
“全棧2019”Java第七十六章:靜態、非靜態內部類訪問權限
inf 內部類 靜態 alt intel com 詳解 int 文章 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文鏈接 “全棧2019”Java第七十六章:靜態、非靜
“全棧2019”Java第七十六章:靜態、非靜態內部類訪問許可權
難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文連結 “全棧2019”Java第七十六章:靜態、非靜態內部類訪問許可權 下一章 “全棧2019”Java第七十七章:抽象內
Java語言程式設計 第十六章(16.6、16.7、16.8、16.9)
程式小白,希望和大家多交流,共同學習 16.6 //文字域的設定方法 import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Sc
鳥哥的Linux私房菜(伺服器)- 第十六章、檔案伺服器之二: SAMBA 伺服器
時至今日,印表機的網路功能已經很強悍了!甚至也有支援無線網路的印表機,因此每臺印表機都可以獨立作為各個 PC 的獨自的印表機,老實說也沒有必要進行 Samba 的網路印表機伺服器啦!但畢竟還是有些比較舊型的機種, 或者買不起有內建網路的印表機時,那麼 Samba 的印表機伺服器還是有存在的價值囉。 在
快學scala第十六章習題——XML處理
本章主要講解對XML的處理,要處理xml需要引入scala-xml-x.x.x.x.jar包,建立普通scala 類不會自動新增此jar包,需要手動引入之後就可以使用了 1.(0)得到什麼,(0)(0)又得到什麼,為什麼? 仍然為<fred/>
《HTTP 權威指南》筆記:第十六章&第十七章 國際化、內容協商與轉碼
二進制 首部 指南 生成文檔 緩存 -type nat lang 緩存代理 《HTTP 權威指南》筆記:第十六章 國際化 客戶端通過在請求報文中的 Accept-Language 首部和 Accept-Charset 首部來告知服務器:“我理解這些語言.&rd
【MySQL必知必會】第十六章 創建高級聯結
類型 where子句 contact items order by 其他 mysq custom 必知必會 1、使用表別名 好處: a、縮短SQL語句。 b、允許在單條SELECT語句中多次使用相同的表。 輸入: SELECT cust_name,cu
第十六章-進程和線程
lan 進程 命名 永遠 大小 無法使用 inux wait 沒有 對於操作系統來說, 一個任務就是一個進程(Process) 進程內的這些“子任務”稱為線程(Thread) 真正的並行執行多任務只能在多核CPU上實現 多任務的實現有3種方式:
算法導論筆記——第十六章 貪心算法
一個 出現 預處理 優化 節點 求解 多選 數據結構 集中 通常用於最優化問題,我們做出一組選擇來達到最優解。每步都追求局部最優。對很多問題都能求得最優解,而且速度比動態規劃方法快得多。 16.1 活動選擇問題 按結束時間排序,然後選擇兼容活動。 定理16.1 考慮任意
第十六章 沒有銀彈 ---軟件工程中的根本和次要問題
測試 未來 接收 增長 ada tail 進行 tro 困難 http://blog.csdn.net/zuochao_2013/article/details/73614151 在未來的十年內,無論是在技術還是管理方法上,都看不出有任何突破性的進步,能夠保證在十年內大幅度
進擊的Python【第十六章】:Web前端基礎之jQuery
name cat 隱藏 function wid get val 綁定 des 進擊的Python【第十六章】:Web前端基礎之jQuery 一、什麽是 jQuery ? jQuery是一個JavaScript函數庫。 jQuery是一個輕量級的"寫的少,做的多"的Java
從零開始的linux 第十六章
rm -rf /* glob通配符的用法詳解從零開始的linux 第十六章路人乙:“啊,小編你越來越過分了,這次居然推遲了一天才來!!”(嬉皮笑臉)嘻嘻~~抱歉啦同學們,小編昨天因為做LNMP以及負載均衡的DR工作模式的時候出了點小問題,原理部分與小編理解的有點誤差~~不過小編這麽厲害肯定是已經解決
算法導論第十六章
LG ted sum 不能 復雜度 selector else n-1 greedy 16.1 16.1-1 int c[n+1][n+1]; int b[n+1][n+1]; for (int i = 0; i <= n; i++) { for (int j =