CXPACKET等待型別分析
背景
客戶反饋今天8點鐘開始進入業務高峰期後,資料庫的CPU利用率非常高,基本達到了100%,前端應用也非常慢。懷疑是昨晚業務系統升級導致,請我們緊急協助分析。 現象
登入到SQL專家雲,進入相關時間的活動會話的原始資料頁面,看到很多會話的等待型別是CXPACKET,並且等待時間達到了幾十秒。
檢視具體的SQL語句,發現都很簡單。
分析
首先簡單介紹一下CXPACKET等待型別:當SQL Server進行某些複雜的運算(例如大表或索引的掃描)時,為了加快執行速度,採用多執行緒並行的方式進行,每個執行緒處理一部分資料,最後再進行結果合併,在等待一個或多個執行緒返回結果時就會產生 CXPACKET等待型別,類似的等待型別還有 CXCONSUMER。 對於 複雜的 SQ L語句 , 並行的方式 可以大幅的 降 低 執行時 間 , 但是對於簡單的、 高並 發 的SQL語句, CXP A C KET 等待類 型就會產生嚴重的效能問題。
如此簡單的SQL語句還要使用並行,第一反應就是缺少合適的索引,透過SQL專家雲的智慧分析,在執行計劃中發現行數為1900多萬的表上有缺失索引,而且影響度非常高。
解決
表上建立好索引後, 該語句的執行時間降低到幾百毫秒,CXPACKET等待型別大幅減少,CPU利用率下降到10%以下。
經驗
如果您的資料庫有大量的 CXPACKET等待型別,並且CPU利用率非常高,以下的經驗基本可以幫助您解決問題
配置最大並行度 (Max Degree of Parallelism)引數,該引數是 例項級別的(2016以後版本中可以對單獨資料庫設定) 。預設是0,對於一個SQL請求,可以使用全部的CPU核數進行並行排程,對於單個SQL請求來說是最好的,但是資料庫是有併發的,就會導致其他的請求沒有CPU資源,所以要在單個語句的執行時間和整體的併發之間取得一個平衡,對於OLTP系統,建議設定成4或者8,對於OLAP系統,可根據實際的併發請求數適當放大。 建立合適的索引, 一個很 簡單的語句產生 CXPACKET等待,絕大多數原因是沒有合適的索引,建立合適索引後,語句會有幾倍到幾十倍的提升。 找到高併發的SQL語句分析並行的原因並進行最佳化,避免並行。 北京格瑞趨勢科技有限公司是聚焦於資料服務的高新技術企業,成立於2008年,創始團隊及核心技術人員來自微軟和雅虎。微軟資料平臺金牌合作伙伴,衛寧健康資料平臺戰略合作伙伴。透過產品+服務雙輪驅動的業務模式,14年間累計服務4000+客戶,覆蓋網際網路、市政、交通、電信、醫療、教育、電力、製造業等各個領域。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023658/viewspace-2930645/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【等待事件】等待事件系列(1)--User I/O型別事件型別
- 關於tc型別的enqueue等待型別ENQ
- Sqlserver並行等待CXPACKET、CXCONSUMER問題的解決思路和案例SQLServer並行
- ORACLE等待事件型別【Classes of Wait Events】Oracle事件型別AI
- oracle等待事件型別wait_class說明Oracle事件型別AI
- 等待事件分析事件
- 教育型別思考分析型別
- 'cursor:mutex ..'/ 'cursor:pin ..'/ 'library cache:mutex ..'型別的等待事件Mutex型別事件
- SQL 2005 WAIT CXPACKETSQLAI
- Oracle10g等待事件型別wait_class說明Oracle事件型別AI
- 【TUNE_ORACLE】等待事件之等待事件類別Oracle事件
- 資料分析工具有哪些型別型別
- 10種型別的IT人士性格分析型別
- 逆向分析Office VBS宏型別文件型別
- Google Play 放置遊戲產品型別分析Go遊戲型別
- Presto原始碼分析之資料型別REST原始碼資料型別
- JavaScript資料型別分析及其轉換JavaScript資料型別
- 大資料分析的型別有哪些大資料型別
- mysql鎖等待查詢分析MySql
- RAC全域性等待事件分析事件
- library cache pin等待分析
- golang — mgo解析各種資料型別分析Golang資料型別
- 分析 JavaScript 的資料型別與變數JavaScript資料型別變數
- TS資料型別:型別別名/聯合型別/字面量型別/型別推論等綱要資料型別
- 淺談程式語言型別的強型別,弱型別,動態型別,靜態型別型別
- read by other session 等待事件分析Session事件
- resmgr:become active 等待事件分析事件
- javascript基本型別 引用型別 基本包裝型別JavaScript型別
- C#的型別——值型別與引用型別C#型別
- 值型別和引用型別型別
- JavaScript引用型別-Object型別JavaScript型別Object
- mysql BLOB型別 TEXT型別MySql型別
- 值型別與引用型別型別
- 故障分析 | MySQL鎖等待超時一例分析MySql
- 分析三種型別的物聯網平臺型別
- lodash原始碼分析之獲取資料型別原始碼資料型別
- 五種 Mach-O 型別的淺要分析Mac型別
- mybaits原始碼分析--型別轉換模組(三)AI原始碼型別