亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 數據庫 > SQL Server > 正文

SQL Server調優系列基礎篇(并行運算總結)

2024-08-31 00:55:05
字體:
來源:轉載
供稿:網友
SQL Server調優系列基礎篇(并行運算總結)

前言

上三篇文章我們介紹了查看查詢計劃的方式,以及一些常用的連接運算符、聯合運算符的優化技巧。

本篇我們分析SQL Server的并行運算,作為多核計算機盛行的今天,SQL Server也會適時調整自己的查詢計劃,來適應硬件資源的擴展,充分利用硬件資源,最大限度的提高性能。

閑言少敘,直接進入本篇的正題。

技術準備

同前幾篇一樣,基于SQL Server2008R2版本,利用微軟的一個更簡潔的案例庫(Northwind)進行解析。

一、并行運算符

在我們日常所寫的T-SQL語句,并不是所有的最優執行計劃都是一樣的,其最優的執行計劃的形成需要多方面的評估才可以,大部分根據SQL Server本身所形成的統計信息,然后對形成的多個執行計劃進行評估,進而選出最優的執行方式。

在SQL Server根據庫內容形成的統計信息進行評估的同時,還要參照當前運行的硬件資源,有時候它認為最優的方案可能當前硬件資源不支持,比如:內存限制、CPU限制、IO瓶頸等,所以執行計劃的優劣還要依賴于底層硬件。

當SQL Server發現某個處理的數據集比較大,耗費資源比較多時,但此時硬件存在多顆CPU時,SQL Server會嘗試使用并行的方法,把數據集拆分成若干個,若干個線程同時處理,來提高整體效率。

在SQL Server中可以通過如下方法,設置SQL Server可用的CPU個數

默認SQL Server會自動選擇CPU個數,當然不排除某些情況下,比如高并發的生產環境中,防止SQL Server獨占所有CPU,所以提供了該配置的界面。

還有一個系統參數,就是我們熟知的MAXDOP參數,也可以更改此系統參數配置,該配置也可以控制每個運算符的并行數(記?。哼@里是每個運算符的,而非全部的),我們來查看該參數

這個并行運算符的設置數,指定的是每個運算符的最大并行數,所以有時候我們利用查看系統任務數的DMV視圖sys.dm_os_tasks來查看,很可能看到大于并行度的線程數據量,也就是說線程數據可能超過并行度,原因就是兩個運算符重新劃分了數據,分配到不同的線程中。

這里如沒特殊情況的話,建議采用默認設置最佳。

我們舉一個分組的例子,來理解并行運算

采用并行運算出了提升性能還有如下幾個優點:

  • 不依賴于線程的數量,在運行時自動的添加或移除線程,在保證系統正常吞吐率的前提下達到一個性能最優值
  • 能夠適應傾斜和負載均衡,比如一個線程運行速度比其它線程慢,這個線程要掃描或者運行的數量會自動減少,而其它跑的快的線程會相應提高任務數,所以總的執行時間就會平穩的減少,而非一個線程阻塞整體性能。

下面我們來舉個例子,詳細的說明一下

并行計劃一般應用于數據量比較大的表,小表采用串行的效率是最高的,所以這里我們新建一個測試的大表,然后插入部分測試數據,我們插入250000行,整體表超過6500頁,腳本如下

--新建表,建立主鍵,形成聚集索引CREATE TABLE BigTable(   [KEY] INT,   DATA INT,   PAD CHAR(200),   CONSTRAINT [PK1] PRIMARY KEY ([KEY]))GO--批量插入測試數據250000行SET NOCOUNT ON DECLARE @i INTBEGIN TRAN    SET @i=0    WHILE @i<250000    BEGIN       INSERT BigTable VALUES(@i,@i,NULL)       SET @i=@i+1       IF @i%1000=0       BEGIN          COMMIT TRAN          BEGIN TRAN       ENDEND    COMMIT TRANGO   

我們來執行一個簡單查詢的腳本

SELECT [KEY],[DATA]FROM BigTable

這里對于這種查詢腳本,沒有任何篩選條件的情況下,沒必要采用并行掃描,因為采用串行掃描的方式得到數據的速度反而比并行掃描獲取的快,所以這里采用了clustered scan的方式,我們來加一個篩選條件看看

SELECT [KEY],[DATA]FROM BigTableWHERE DATA<1000

對于這個有篩選條件的T-SQL語句,這里SQL Server果斷的采用的并行運算的方式,聚集索引也是并行掃描,因為我電腦為4個邏輯CPU(其實是2顆物理CPU,4線程),所以這里使用的是4線程并行掃描四次表,每個線程掃描一部分數據,然后匯總。

這里總共用了4個線程,其中線程0為調度線程,負責調度所有的其它線程,所以它不執行掃描,而線程1到線程4執行了這1000行的掃描!當然這里數據量比較少,有的線程分配了0個任務,但是總得掃描次數為4次,所以這4個線程是并行的掃描了這個表。

可能上面獲取的結果比較簡單,有的線程任務還沒有給分配滿,我們來找一個相對稍復雜的語句

SELECT MIN([DATA])FROM BigTable

這個執行計劃挺簡單的,我們依次從右邊向左分析,依次執行為:

4個并行聚集索引掃描——>4個線程并行獲取出前當前線程的最小數——>執行4個最小數匯總——>執行流聚合獲取出4個數中的最小值——>輸出結果項。

然后4個線程,每個線程一個流聚合獲取當前線程的最小數

然后,將這個四個最小值經過下一個“并行度”的運算符匯聚成一個表

然后下一個就是流聚合,從這個4行數據中獲取出最小值,進行輸出,關于流聚合我們上一篇文章中已經介紹

以上就一個一個標準的多線程并行運算的過程。

上面的過程中,因為我們使用的并行聚集索引掃描數據,4個線程基本上是平均分攤了任務量,也就是說每個線程掃描的數據量基本相等,下面我們將一個線程使其處于忙碌狀態,看看SQL Server會不會將任務動態的平攤到其它幾個不忙碌的線程上。

我們在來添加一個大數據量表,腳本如下

SELECT [KEY],[DATA],[PAD] INTO BigTable2FROM BigTable

我們來寫一個大量語句的查詢,使其占用一個線程,并且我們這里強制指定只用一個線程運行

SELECT MIN(B1.[KEY]+B2.[KEY]) FROM BigTable B1 CROSS JOIN BigTable2 B2OPTION(MAXDOP 1) 

以上代碼想跑出結果,就我這個電腦配置估計少說五分鐘以上,并且我們還強行串行運算,速度可想而知,我們接著執行上面的獲取最小值的語句,查看執行計劃

SELECT MIN([DATA])FROM BigTable

我們在執行計劃中,查看到了聚集索引掃描的線程數量

可以看到,線程1已經數量減少了近四分之的數據,并且從線程1到線程4,所掃描的數據量是依次增加的。

我們上面的語句很明確的指定了MAXDOP為1,理論上講只可能會影響一個線程,為什么這幾個線程都影響呢?其實這個原因很簡單,我的電腦是物理CPU只有兩核,所謂的線程數只是超線程,所以非傳統意義上的真正的4核數,所以線程之間是互相影響的。

我們來看一個并行連接操作的例子,我們查看并行嵌套循環是怎樣利用資源的

SELECT B1.[KEY],B1.DATA,B2.DATA FROM BigTable B1 JOIN BigTable2 B2ON B1.[KEY]=B2.[KEY]WHERE B1.DATA<100

上面的語句中,我們在BigTable中Key列存在聚集索引,而查詢條件中DATA列不存在,所以這里肯定為聚集索引掃描,對數據進行查找

來看執行計劃

我們依次來分析這個流程,結合文本的執行計劃分析更為準確,從右邊依次向左分析

第一步,就是利用全表通過聚集索引掃描獲取出數據,因為這里采用的并行的聚集索引掃描,我們來看并行的線程數和掃描數

四個線程掃描,這里線程3獲取出數據100行數據。

然后將這100行數據,重新分配線程,這里每個線程平均分配到25行數據

到此,我們要獲取的結果已經均分成4個線程共同執行,每個線程分配了25行數據,下一步就是交給嵌套循環連接了,因為我們上面的語句中需要從BigTable2中獲取數據行,所以這里選擇了嵌套循環,依次掃描BigTable2獲取數據。

關于嵌套循環連接運算符,可以參照我的第二篇文章。

我們知道這是外表的循環數,也就是說這里會有4個線程并行執行嵌套循環。如果每個線程均分25行,數據那么內部表就要執行

4*25=100次。

然后,執行完,嵌套掃描獲取結果后,下一步就是,將各個線程執行的結果通過并行運算符匯總,然后輸出

上述過程就是一個并行嵌套循環的執行流程。充分利用了四核的硬件資源。

參考文獻

  • 微軟聯機叢書邏輯運算符和物理運算符引用
  • 參照書籍《SQL.Server.2005.技術內幕》系列

結語

此篇文章先到此吧,文章短一點,便于理解掌握,后續關于并行操作還有一部分內容,后續文章補充吧,本篇主要介紹了查詢計劃中的并行運算符,下一篇我們接著補充一部分SQL Server中的并行運算,然后分析下我們日常所寫的增刪改這些操作符的優化項,有興趣可提前關注,關于SQL Server性能調優的內容涉及面很廣,后續文章中依次展開分析。

有問題可以留言或者私信,隨時恭候有興趣的童鞋加入SQL SERVER的深入研究。共同學習,一起進步。

文章最后給出上一篇的連接

SQL Server調優系列基礎篇

SQL Server調優系列基礎篇(常用運算符總結)

SQL Server調優系列基礎篇(聯合運算符總結)

如果您看了本篇博客,覺得對您有所收獲,請不要吝嗇您的“推薦”。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九九热精品免费视频观看网站| 日韩一区二区三区在线播放| 亚洲精品久久久久久久久久久| 奇米4444一区二区三区| 欧美裸体男粗大视频在线观看| 日韩一区二区在线视频| 国产精品美女免费| 91经典在线视频| 永久免费看mv网站入口亚洲| 国内精品400部情侣激情| 国内外成人免费激情在线视频网站| 亚洲aⅴ日韩av电影在线观看| 国产一区二区三区在线免费观看| 欧美极品少妇xxxxⅹ裸体艺术| 国产精品自产拍在线观看| 日韩久久精品成人| 国产精品羞羞答答| 日韩精品中文字幕在线播放| 国产免费一区二区三区在线能观看| 日韩毛片在线观看| 国产精品极品尤物在线观看| 欧美专区在线观看| 亚洲欧洲日韩国产| 日韩成人性视频| 日韩国产激情在线| 1769国产精品| 国语自产精品视频在免费| 欧美激情在线播放| 欧美成人一区二区三区电影| 日本韩国在线不卡| 国产精品久久久久久久av电影| 欧美精品激情视频| 国产欧美日韩免费看aⅴ视频| 一区二区三区亚洲| 欧美综合在线观看| 一区二区三区美女xx视频| 超碰91人人草人人干| 国产美女91呻吟求| 国产精品久久久久久久天堂| 久久久97精品| 久久亚洲精品一区二区| 欧美成人h版在线观看| 欧美电影免费在线观看| 91久久久国产精品| 久久久精品久久久久| 久久久国产在线视频| 亚洲激情电影中文字幕| 亚洲欧美日韩一区在线| 亚洲免费伊人电影在线观看av| 久久精彩免费视频| 久久手机免费视频| 国产精品久久久久久久久影视| 曰本色欧美视频在线| 91免费观看网站| 亚洲人在线观看| 国产91精品黑色丝袜高跟鞋| 在线观看成人黄色| 国产一区二区三区网站| 91久久久久久国产精品| 日韩a**站在线观看| 日韩精品免费看| 国产一区二区三区精品久久久| 黄色精品在线看| 亚洲成avwww人| 亚洲精品国产免费| 永久免费看mv网站入口亚洲| 97精品一区二区三区| 欧美性20hd另类| 成人看片人aa| 日韩av免费看| 久久人人97超碰精品888| 欧美性理论片在线观看片免费| 97超级碰在线看视频免费在线看| 蜜臀久久99精品久久久久久宅男| 亚洲福利视频专区| 亚洲色图第一页| 美女撒尿一区二区三区| 亚洲女人天堂av| 91成人福利在线| 国产精品日韩在线播放| 久久久久久中文| 国内自拍欧美激情| 日韩中文字幕欧美| 92国产精品久久久久首页| 91精品中国老女人| 亚洲天堂久久av| 国产精品美女网站| 日韩在线不卡视频| 亚洲成人精品视频| 亚洲国产欧美在线成人app| 色婷婷成人综合| 亚洲国产欧美一区| 日韩精品极品视频免费观看| www.国产精品一二区| 欧美性xxxx极品hd欧美风情| 77777亚洲午夜久久多人| 92版电视剧仙鹤神针在线观看| 久久久久久久久久国产精品| 色中色综合影院手机版在线观看| 5252色成人免费视频| 91久久久精品| 日本久久久久久久久久久| 九九九久久国产免费| 欧洲s码亚洲m码精品一区| 久久久久久久国产精品| 国产精品亚洲片夜色在线| 91精品国产乱码久久久久久蜜臀| 国产成人综合精品| 日韩欧美精品免费在线| 欧美孕妇与黑人孕交| 4438全国亚洲精品在线观看视频| 久热精品视频在线观看| 久久久噜噜噜久久中文字免| 欧美日韩在线免费| 尤物99国产成人精品视频| 国产精品午夜一区二区欲梦| 一区二区欧美激情| 亚洲午夜色婷婷在线| 欧美午夜美女看片| 久色乳综合思思在线视频| 日韩精品亚洲元码| 久久久噜噜噜久久| 日韩中文字幕网| 日韩欧美综合在线视频| 亚洲男人天堂久| 国产成人精品日本亚洲专区61| 亚洲最新视频在线| 青草成人免费视频| 性金发美女69hd大尺寸| 欧美精品在线播放| 欧美性猛交xxxx乱大交蜜桃| 亚洲国产高清自拍| 综合欧美国产视频二区| 亚洲第五色综合网| 91po在线观看91精品国产性色| 国产综合在线视频| 国产不卡av在线免费观看| 久久av在线播放| 欧美日韩国产第一页| 麻豆国产va免费精品高清在线| 九九热视频这里只有精品| 亚洲一区二区久久久久久久| 超在线视频97| 欧美综合激情网| www国产亚洲精品久久网站| 在线国产精品视频| 91精品国产777在线观看| 久久人人爽人人爽爽久久| 91免费视频网站| 欧洲精品在线视频| 精品国产成人av| 中文字幕亚洲在线| 亚洲精品一二区| 欧美性猛交xxxx免费看久久久| 国产精品久久久久久av福利| 亚洲一区国产精品| 国产综合视频在线观看| 欧美体内谢she精2性欧美| 成人妇女免费播放久久久| 国产有码在线一区二区视频| 国产在线高清精品| 青草青草久热精品视频在线观看| 国产精品伦子伦免费视频| 欧美一级高清免费|