婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 系統隱形殺手——阻塞與等待(SQL)

系統隱形殺手——阻塞與等待(SQL)

熱門標簽:零成本地圖標注賺錢 千呼電話機器人可以試用嗎 互聯網電話外呼系統 400電話辦理泰安 我要地圖標注數量有限制嗎 電銷需要外呼系統嗎 家庭農場地圖標注名稱怎樣起名 安卡拉地圖標注app 電話機器人怎么代理商

前言

應用系統承載著大量的業務,隨之而來的是復雜的業務邏輯,在數據庫上的表現就是有著大量的不同種類的SQL語句。

SQL語句執行的快慢又與阻塞等待有著密不可分的原因。

系統慢可能有很多種原因,硬件資源不足,語句不優化,結構設計不合理,缺少必要的運維方式。所有的這些問題都可以在阻塞與等待中看出端倪,發現并解決問題。

今天這篇我們主要講述怎么樣發現并解決系統的阻塞和等待。

場景描述

您的系統是否有這樣的問題?

  1. 系統運行緩慢,很多功能需要幾十秒才能呈現結果,用戶體驗極差,領導們不斷施壓,作為系統的負責人,只知道系統慢又不知道慢在哪里?我們遲遲不能解決問題,領導已經對我們怨聲載道了或者已經慢習慣了,不再反饋了。
  2. 系統的功能運行緩慢,在生產環境中語句運行時間很長,但是在測試環境或者單獨拿出這條語句運行的卻很快?這好像不科學呀?
  3. 我對數據有較多的了解,我能查出系統的等待,但是我不知道這些等待意味著什么,百度的答案五花八門解決不了我的問題。
  4. 我能找到等待,也能解決這部分等待,但只是通過一些腳本,不能全面了解現狀,只能東一錘子西一棒子的游擊戰。
  5. 我是專家問題我都能解決,但不能給領導一個直觀的展現。

系統等待簡介

一個好的SQL語句就好比一輛時速180的好車,好的系統硬件(CPU,內存,磁盤)就好比平坦寬闊的馬路。看似好車配好路,一定可以開的很快了!其實還忽略了一點!當你駕駛一輛法拉利跑在北京寬闊的三環上,就算你是老炮中的“三環十二少“,早高峰你能開到多少? 北京的早高峰!北京的早高峰!

這個例子就引出了系統阻塞和等待的概念,紅燈(硬件等待,如IO等待),這就是正常的等待。另外一輛車在你前面不走了或開的很慢,那么你也只能等待(也可以說成你被他阻塞了)!

一張圖告訴你系統的主要等待類型及解決思路:

問題診斷

任何問題的診斷都要從全局的角度考慮,最忌諱的就是看到一個指標高就冒然定位問題,然后以偏概全的去分析問題。

一個問題點可能涉及到很多部分,所以我們首先要從全局的角度定位系統問題,阻塞也是一樣,到底系統中存在哪些類型的阻塞,哪些是主因,哪些是關聯原因,哪些是次要的。

全局定位阻塞與等待  

首先我們要關心數據庫中有哪些等待類型

注:這部分呈現的是系統中的等待情況,和使用腳本類似,已經排除了不必要關心的類型,同時對等待情況進行歸類統計。

橫坐標:等待類型

縱坐標:收集時間段內出現的次數

知道了等到類型,我們要了解這些類型中,哪種占用了大量的時間:

注:各種等待類型所等待的時間也是排查的主要方向,結合等待類型與等待時間,我們能了解到:系統中有哪些等待,哪些等待比較嚴重,哪個最嚴重。

橫坐標:等待類型

縱坐標:平均等待時間

了解了主要的等待類型和時間,我們還要分析一下:什么數據庫來的?哪些程序來的?什么用戶請求導致的?什么時間阻塞最嚴重?

具體語句看等待

系統的整體等待情況了然于心,下面我們改看看具體哪些語句造成的等待,這也是解決問題的重要分析步驟。

哪些語類句等待最頻繁

注:這里我們可以根據等待次數、等待時間、消耗的各種資源排序,來多維度分析阻塞的語句類型

語句具體的等待情況時怎樣的呢?我們可以通過【原始視圖】查看具體語句在執行過程中的真實阻塞情況

注:在阻塞的詳細視圖中我們可以清晰的看到語句的阻塞樹,并且可以看到阻塞的語句、時間、資源已經阻塞等待的類型

阻塞樹:本例中【會話68】被【會話66】阻塞,而【會話66】又被【會話104】阻塞,這樣3個會話就構成了一個阻塞鏈也叫阻塞樹

診斷結論

通過全局定位,語句類型分析,到具體的語句執行阻塞狀態,根據阻塞類型、次數、時間、連接程序、資源消耗等多種維度綜合分析,我們可以清楚的看出數據庫中的阻塞問題。

本例中系統主要的阻塞類型為CXPACKET和LCK_M_U,阻塞時間很長,主要的阻塞產生時間為上午十一點左右,主要的阻塞語句是一條update 和一個復雜的select查詢等信息。

問題解決

首先下面的這張圖已經簡單的說明了系統對應的等待需要怎么樣的解決思路。  

注:根據不同的情況降低阻塞的辦法主要有:調整服務器、實例、數據庫配置參數(如:調整并行度),更改隔離級別(如:快照讀,nolock等),優化語句(如:添加索引,優化寫法等)

本例中主要的CXPACKET是因為實例并行度參數配置不佳而導致,LCK_M_U主要是一條update被一個批處理的另一條update阻塞鎖導致,優化update這類更新語句主要是保證update語句最優化,執行時間盡量縮短,另外高并發下的update比較常見的解決辦法是使用索引利用key鎖取代表鎖以提高并發,可能被更新的表只有幾十條記錄,添加索引與不加索引的并發效率差別也會很大。另外程序的設計也是非常重要的,各種奧秘各位看官只能在實際環境中慢慢體會了,而使用SQL專家云工具的主要目的在于全面的定位問題,圖表統計等形式清晰的展現問題,并根據工具提供的解決方案快速解決問題。

以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持腳本之家!

您可能感興趣的文章:
  • SqlServer中如何解決session阻塞問題
  • mysql的udf編程之非阻塞超時重傳
  • sql server 2000阻塞和死鎖問題的查看與解決方法
  • SQL Server誤區30日談 第2天 DBCC CHECKDB會導致阻塞
  • 利用sys.sysprocesses檢查SqlServer的阻塞和死鎖
  • SQL2008中SQL應用之-阻塞(Blocking)應用分析
  • sqlserver中幾種典型的等待
  • SQL語句實現查詢當前數據庫IO等待狀況
  • SQL語句練習實例之三——平均銷售等待時間

標簽:來賓 池州 大同 新鄉 文山 黃山 濱州 東營

巨人網絡通訊聲明:本文標題《系統隱形殺手——阻塞與等待(SQL)》,本文關鍵詞  系統,隱形,殺手,阻塞,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《系統隱形殺手——阻塞與等待(SQL)》相關的同類信息!
  • 本頁收集關于系統隱形殺手——阻塞與等待(SQL)的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 井陉县| 邹城市| 芜湖市| 武宣县| 林甸县| 博客| 阿克苏市| 富平县| 沅江市| 锦州市| 固安县| 墨脱县| 靖宇县| 寿宁县| 军事| 江华| 无为县| 浙江省| 锦屏县| 大同市| 西丰县| 高邑县| 三江| 嘉黎县| 日喀则市| 沙雅县| 堆龙德庆县| 淮北市| 阜新| 揭东县| 涞水县| 绩溪县| 红桥区| 鄄城县| 远安县| 南宫市| 宜阳县| 旺苍县| 霞浦县| 霞浦县| 长兴县|