偵測阻塞語句

來源:互聯網
上載者:User
前言:

如果一個事務正在等待一些給其他事務鎖定資源。這個事務就被成為“被阻塞的事務”。反過來,引起阻塞的事務,也就是鎖定資源並造成其他事務等待的事務叫做“封鎖交易”。

長時間運行事務會阻塞其他事務和查詢,使他們等待長時間。在繁重的系統中,很多時候我們會遇到阻塞問題,如果一個事務因為阻塞未完成。會造成一些列的等待鏈。

本文將介紹如何發現並馬上解決這方面的問題。

  準備工作:

本例依舊使用SQLServer2012上的AdventureWorks2012資料庫。

  步驟:

1、 連到SQLServer2012的AdventureWorks2012資料庫。

2、 建立視窗並輸入: [sql] view plaincopyprint? 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語句,將不會執行,因為在等待第二步中的事務:


[sql] view plaincopyprint? USE AdventureWorks2012   GO      --開啟事務   BEGIN TRANSACTION      UPDATE  Sales.SalesOrderDetail   SET     OrderQty = 10   WHERE   SalesOrderDetailID = 121316      COMMIT TRANSACTION  

5、 再開啟一個事務,輸入以下代碼查詢被阻塞和正在阻塞的查詢:  [sql] view plaincopyprint? 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  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.