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

首頁(yè) > 數(shù)據(jù)庫(kù) > SQL Server > 正文

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

2024-08-31 01:03:38
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
SQL Server 2016已經(jīng)發(fā)布了有半年多,相信還有很多小伙伴還沒(méi)有開(kāi)始使用,今天我們來(lái)談?wù)凷QL Server 2016 查詢存儲(chǔ)性能優(yōu)化,希望大家能夠喜歡
 

作為一個(gè)DBA,排除SQL Server問(wèn)題是我們的職責(zé)之一,每個(gè)月都有很多人給我們帶來(lái)各種不能解釋卻要解決的性能問(wèn)題。

我就多次聽(tīng)到,以前的SQL Server的性能問(wèn)題都還好且在正常范圍內(nèi),但現(xiàn)在一切已經(jīng)改變,SQL Server開(kāi)始糟糕, 瘋狂的事情不能解釋。在這個(gè)情況下我介入,分析下整個(gè)SQL Server的安裝,最后用一些神奇的調(diào)查方法找出性能問(wèn)題的根源。

但很多時(shí)候問(wèn)題的根源是一樣的:所謂的計(jì)劃回歸(Plan Regression),即特定查詢的執(zhí)行計(jì)劃已經(jīng)改變。昨天SQL Server已經(jīng)緩存了在計(jì)劃緩存里緩存了一個(gè)好的執(zhí)行計(jì)劃,今天就生成、緩存最后重用了一個(gè)糟糕的執(zhí)行計(jì)劃——不斷重復(fù)。

進(jìn)入SQL Server 2016后,我就變得有點(diǎn)多余了,以為微軟引進(jìn)了查詢存儲(chǔ)(Query Store)。這是這個(gè)版本最熱門的功能!查詢存儲(chǔ)幫助你很容易找出你的性能問(wèn)題是不是計(jì)劃回歸造成的。如果你找到了計(jì)劃回歸,這很容易強(qiáng)制一個(gè)特定計(jì)劃不使用計(jì)劃向?qū)?。?tīng)起來(lái)很有意思?讓我們通過(guò)一個(gè)特定的場(chǎng)景,向你展示下在SQL Server 2016里,如何使用查詢存儲(chǔ)來(lái)找出并最終修正計(jì)劃回歸。

查詢存儲(chǔ)(Query Store)——我的對(duì)手

在SQL Server 2016里,在你使用查詢存儲(chǔ)功能前,你要對(duì)這個(gè)數(shù)據(jù)庫(kù)啟用它。這是通過(guò)ALTER DATABASE語(yǔ)句實(shí)現(xiàn),如你所見(jiàn)的下列代碼:

CREATE DATABASE QueryStoreDemoGOUSE QueryStoreDemoGO-- Enable the Query Store for our databaseALTER DATABASE QueryStoreDemoSET QUERY_STORE = ONGO-- Configure the Query StoreALTER DATABASE QueryStoreDemo SET QUERY_STORE( OPERATION_MODE = READ_WRITE,  CLEANUP_POLICY = (STALE_QUERY_THRESHOLD_DAYS = 367),  DATA_FLUSH_INTERVAL_SECONDS = 900,  INTERVAL_LENGTH_MINUTES = 1,  MAX_STORAGE_SIZE_MB = 100,  QUERY_CAPTURE_MODE = ALL,  SIZE_BASED_CLEANUP_MODE = OFF)GO

 

在線幫助為你提供了各個(gè)選項(xiàng)的詳細(xì)信息。接下來(lái)我創(chuàng)建一個(gè)簡(jiǎn)單的表,創(chuàng)建一個(gè)非聚集索引,最后插入80000條記錄。

 

-- Create a new tableCREATE TABLE Customers( CustomerID INT NOT NULL PRIMARY KEY CLUSTERED, CustomerName CHAR(10) NOT NULL, CustomerAddress CHAR(10) NOT NULL, Comments CHAR(5) NOT NULL, Value INT NOT NULL)GO-- Create a supporting new Non-Clustered Index.CREATE UNIQUE NONCLUSTERED INDEX idx_Test ON Customers(Value)GO-- Insert 80000 recordsDECLARE @i INT = 1WHILE (@i <= 80000)BEGIN INSERT INTO Customers VALUES (  @i,  CAST(@i AS CHAR(10)),  CAST(@i AS CHAR(10)),  CAST(@i AS CHAR(5)),  @i )  SET @i += 1ENDGO

為了訪問(wèn)我們的表,我額創(chuàng)建了一個(gè)簡(jiǎn)單的存儲(chǔ)過(guò)程,傳入value值作為過(guò)濾謂語(yǔ)。

 

-- Create a simple stored procedure to retrieve the dataCREATE PROCEDURE RetrieveCustomers( @Value INT)ASBEGIN SELECT * FROM Customers WHERE Value < @ValueENDGO

現(xiàn)在我用80000的參數(shù)值來(lái)執(zhí)行存儲(chǔ)過(guò)程。

-- Execute the stored procedure. -- This generates an execution plan with a Key Lookup (Clustered). EXEC RetrieveCustomers 80000 GO

 

現(xiàn)在當(dāng)你查看實(shí)際的執(zhí)行計(jì)劃時(shí),你會(huì)看到查詢優(yōu)化器已經(jīng)選擇了有419個(gè)邏輯讀的聚集索引掃描運(yùn)算符。SQL Server并沒(méi)有使用非聚集索引,因?yàn)檫@樣沒(méi)有意義,由于臨界點(diǎn)。這個(gè)查詢結(jié)果并沒(méi)有選擇性。

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

現(xiàn)在假設(shè)SQL Server發(fā)生了些事情(例如重啟,故障轉(zhuǎn)移),SQL Server忽略已經(jīng)緩存的計(jì)劃,這里我通過(guò)執(zhí)行DBCC FREEPROCCACHE從計(jì)劃緩存里抹掉每個(gè)緩存的計(jì)劃來(lái)模擬SQL Server重啟(不要在生產(chǎn)環(huán)境里使用!)。

 -- Get rid of the cached execution plan... DBCC FREEPROCCACHE GO

 

現(xiàn)在有人再次調(diào)用你的存儲(chǔ)過(guò)程,這次輸入?yún)?shù)值是1。這次執(zhí)行計(jì)劃不一樣,因?yàn)楝F(xiàn)在在執(zhí)行計(jì)劃里你會(huì)有書(shū)簽查找。SQL Server估計(jì)行數(shù)是1,在非聚集索引里沒(méi)有找到任何行。因此與非聚集索引查找結(jié)合的書(shū)簽查找才有意義,因?yàn)檫@個(gè)查詢是有選擇性的。

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

現(xiàn)在我再執(zhí)行用80000參數(shù)值的查詢。

-- Execute the stored procedureEXEC RetrieveCustomers 1GO-- Execute the stored procedure again-- This introduces now a plan regression, because now we get a Clustered Index Scan-- instead of the Key Lookup (Clustered).EXEC RetrieveCustomers 80000GO

 

當(dāng)你再次看STATISTICS IO的輸出,你會(huì)看到這個(gè)查詢現(xiàn)在產(chǎn)生了160139個(gè)邏輯讀——剛才的查詢只有419個(gè)邏輯讀。這個(gè)時(shí)候DBA的手機(jī)就會(huì)響起,性能問(wèn)題。但今天我們要不同的方式解決——使用剛才啟用的查詢存儲(chǔ)。

當(dāng)你再次看實(shí)際的執(zhí)行計(jì)劃,在你面前你會(huì)看到有一個(gè)計(jì)劃回歸,因?yàn)镾QL Server剛重用了書(shū)簽查找的的計(jì)劃緩存。剛才你有聚集索引掃描運(yùn)算符的執(zhí)行計(jì)劃。這是SQL Server里參數(shù)嗅探的副作用。

讓我們通過(guò)查詢存儲(chǔ)來(lái)詳細(xì)了解這個(gè)問(wèn)題。在SSMS里的對(duì)象資源管理器里,SQL Server 2016提供了一個(gè)新的結(jié)點(diǎn)叫查詢存儲(chǔ),這里你會(huì)看到一些報(bào)表。

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

【前幾個(gè)資源使用查詢】向你展示了最昂貴的查詢,基于你選擇的維度。這里切換到【邏輯讀取次數(shù)】。

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

這里在你面前有一些查詢。最昂貴的查詢生成了近500000個(gè)邏輯讀。這是我們的初始語(yǔ)句。這已經(jīng)是第一個(gè)WOW效果的的查詢存儲(chǔ):SQL Server重啟后,查詢存儲(chǔ)的數(shù)據(jù)還是存在的!第2個(gè)是你存儲(chǔ)過(guò)程里的SELECT語(yǔ)句。在查詢存儲(chǔ)里每個(gè)捕獲的查詢都有一個(gè)標(biāo)示號(hào)——這里是7。最后當(dāng)你看報(bào)告的右邊,你會(huì)看這個(gè)查詢的不同執(zhí)行計(jì)劃。

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

如你所見(jiàn),查詢存儲(chǔ)捕獲了2個(gè)不同的執(zhí)行計(jì)劃,一個(gè)ID是7,一個(gè)ID是8。當(dāng)你點(diǎn)擊計(jì)劃ID時(shí),SQL Server會(huì)在報(bào)表的最下面為你顯示估計(jì)的執(zhí)行計(jì)劃。

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

計(jì)劃8是聚集索引掃描,計(jì)劃7是書(shū)簽查找。如你所見(jiàn),使用查詢存儲(chǔ)分析計(jì)劃回歸非常簡(jiǎn)單。但你現(xiàn)在還沒(méi)結(jié)束。你現(xiàn)在可以對(duì)指定的查詢強(qiáng)制執(zhí)行計(jì)劃。 現(xiàn)在你知道包含聚集索引掃描的執(zhí)行計(jì)劃有更好的性能。因此現(xiàn)在你可以通過(guò)點(diǎn)擊【強(qiáng)制執(zhí)行計(jì)劃】強(qiáng)制查詢7使用執(zhí)行計(jì)劃。

SQL Server 2016 查詢存儲(chǔ)性能優(yōu)化小結(jié)

搞定,我們已經(jīng)解決問(wèn)題了!

現(xiàn)在當(dāng)你執(zhí)行存儲(chǔ)過(guò)程(用80000的輸入?yún)?shù)值),在執(zhí)行計(jì)劃里你可以看到聚集索引掃描,執(zhí)行計(jì)劃只生成419個(gè)邏輯讀——很簡(jiǎn)單,是不是?絕對(duì)不是?。。?!

微軟告訴我們只給修正SQL Server性能相關(guān)的“新方式”。你只是強(qiáng)制了特定的計(jì)劃,一切都還好。這個(gè)方法有個(gè)大的問(wèn)題,因?yàn)樾阅軉?wèn)題的根源并沒(méi)有解決!這個(gè)問(wèn)題的關(guān)鍵是因?yàn)闀?shū)簽查找計(jì)劃沒(méi)有穩(wěn)定性。取決于首次執(zhí)行計(jì)劃默認(rèn)的輸入值,執(zhí)行計(jì)劃因此就被不斷重用。

通常我會(huì)建議調(diào)整下你的索引設(shè)計(jì),創(chuàng)建一個(gè)覆蓋索引來(lái)保證計(jì)劃的穩(wěn)定性。但強(qiáng)制特定執(zhí)行計(jì)劃只是臨時(shí)解決問(wèn)題——你還是要修正你問(wèn)題的根源。

小結(jié)

不要誤解我:SQL Server 2016里的查詢存儲(chǔ)功能很棒,可以幫你更容易理解計(jì)劃回歸。它也會(huì)幫你“臨時(shí)”強(qiáng)制特定的執(zhí)行計(jì)劃。但性能調(diào)優(yōu)的目標(biāo)還是一樣:你要找到問(wèn)題根源,嘗試解決問(wèn)題——不要在外面晃蕩!



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MSSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
欧美日韩123区| 欧美日本三级| 久久成人免费视频| 久久久全国免费视频| 最新不卡av| 性做久久久久久久久久| 亚洲av鲁丝一区二区三区| 亚洲国产精品一区二区第四页av| 精品一区二区成人精品| 日韩美女一级片| 欧美成人三级在线| 九九热精品视频在线观看| 欧美日韩专区在线| 久久久99久久精品女同性| 夜级特黄日本大片_在线| 国产999精品久久久久久| 午夜精品久久久久久久四虎美女版| 精品久久久久久| 欧美日韩美女在线观看| 久久国产精品亚洲77777| 波多野结衣一二区| 久久国产劲爆∧v内射| 精品国产一二三区| 国产一区福利视频| 久久久国产精品网站| 毛片中文字幕| 精品国语对白精品自拍视| 亚洲色图综合| 91免费视频污| 激情偷拍久久| 国产精品㊣新片速递bt| 91视频网址免费观看| 欧美写真视频网站| 欧美一区欧美二区| 99久久久免费精品国产一区二区| 啦啦啦在线视频免费观看高清中文| 91人妻一区二区| 在线播放/欧美激情| 中文字幕1区2区| 久久99热这里只有精品| 国产欧美久久久久久| 国产女主播在线一区二区| 黑巨茎大战欧洲金发美女| 日韩精品电影一区亚洲| 国产精品一区二区久久久| 亚洲爱爱综合网| 隔壁老王国产在线精品| 久久综合成人精品亚洲另类欧美| 影音先锋国产精品| 激情在线视频| 成人激情在线观看| 婷婷丁香综合| 少妇久久久久| 日韩欧美一区二区三区四区| 草民午夜欧美限制a级福利片| 日韩精品电影在线观看| 免费成人深夜夜行p站| 亚洲丝袜在线视频| wwwxx欧美| 佐山爱在线视频| 在线视频免费观看一区| 日韩午夜在线视频| 中文字幕一区日韩精品欧美| 欧美日韩中国免费专区在线看| 香蕉视频免费在线播放| 国产亚洲一区二区三区在线观看| 2023国产一二三区日本精品2022| 亚洲欧洲激情在线乱码蜜桃| av在线精品| 精品久久sese| 日本人dh亚洲人ⅹxx| 精品人妻少妇嫩草av无码专区| www.成人av| 2017亚洲男人天堂| 717成人午夜免费福利电影| h网在线观看| 欧美一区二区视频17c| 成人短视频软件网站大全app| 国产偷倩在线播放| 激情欧美亚洲| www.国产福利| av大全在线观看| 中文字幕中文字幕在线中一区高清| 日本免费高清视频| 特级西西444| 69国产精品视频| 亚洲成人动漫av| 国产无精乱码一区二区三区| 一级毛片免费高清中文字幕久久网| 亚洲自拍欧美色图| 午夜影院观看视频免费| 日韩欧美aⅴ综合网站发布| 91免费看片在线| 久久精品国产亚洲一区二区三区| av自拍一区| 成人听书哪个软件好| 欧美孕妇孕交黑巨大网站| 少妇毛片一区二区三区| 亚洲天堂av中文字幕| 在线观看网站黄| 中国人体摄影一区二区三区| 国产自产视频一区二区三区| 久久久久久久久久久久久久久国产| 久久亚洲精品中文字幕| 国产丝袜视频一区| 26uuu成人网一区二区三区| 国产精品一区免费观看| 91视频青青草| 成人拍拍拍免费视频网站| 久草免费资源站| 欧洲日韩一区二区三区| 国产精品第一页第二页第三页| 国内精品在线视频| 少妇精品高潮欲妇又嫩中文字幕| 亚洲理论在线观看| 精品国产伦一区二区三区观看说明| 成人综合久久| 裸体裸乳免费看| 国产黄色在线看| 亚洲高清一区二区三区| 亚洲制服国产| 五月激情婷婷在线| 僵尸世界大战2 在线播放| 亚洲v日本v欧美v久久精品| 99自拍视频在线| 久久er99热精品一区二区| 狠狠做六月爱婷婷综合aⅴ| 综合激情在线| 国产黄色在线| 国产一区二区三区久久精品| 国内精品视频在线观看| 久久人体视频| 国产91亚洲精品一区二区三区| 欧美日韩欧美一区二区| 欧美激情一级片一区二区| 亚洲色婷婷久久精品av蜜桃| 亚洲人成网站影音先锋播放| 亚洲日本欧美在线| 九九热只有精品| 国产成人免费视频网站高清观看视频| 欧美精品色一区二区三区| 久久久久久久久久91| 精品综合免费视频观看| 91亚洲精品久久久蜜桃网站| 欧美中文日韩| 日本精品视频在线观看| 国产精品久久久久久久久久久久久久| 国产三级精品网站| 一卡二卡3卡四卡高清精品视频| 亚洲免费高清| 疯狂做受xxxⅹ高潮视频免费| 日韩欧美中文| 亚洲精品**中文毛片| 国产精品视频公开费视频| 国产呦精品一区二区三区网站| 欧美一区二区三区四区在线观看地址| 国产香蕉视频在线看| 精品无码久久久久久久久| 亚洲成人套图| 99热99这里只有精品| 91成人精品观看| 亚洲欧洲中文日韩久久av乱码| 国产 中文 字幕 日韩 在线| 好吊视频一二三区| 麻豆传媒在线看| 波多野结衣家庭教师| 尤物yw193can在线观看| 爱福利在线视频| 一区二区三区高清在线视频| 久久色视频免费观看| 亚洲一区二区三区视频| 国产原创一区| 中文字幕欧美人妻精品一区蜜臀| 日韩黄色短视频| 色婷婷久久久| 欧美一区第一页| 久草在线青青草| 97视频网站入口| 成人亚洲精品久久久久软件| 亚洲国产精品久久久久久久| 天堂网视频在线| 中文字幕一区二区在线观看| www.五月婷婷.com| 综合网五月天| 第一sis亚洲原创| 亚洲AV无码久久精品国产一区| 欧产日产国产69| 天堂影院一区二区| 国内精品区一区二区三| 日韩一区二区麻豆国产| 欧美日韩在线一区二区| 女同互添互慰av毛片观看| 免费网站看黄yyy222| 日韩黄色一级片| 37p粉嫩大胆色噜噜噜| 三级4级全黄60分钟| 91精品网站| 黄色视屏在线免费观看| 欧美91看片特黄aaaa| 日韩一区二区视频在线| 国产一区二区视频免费| 一区二区三区精品在线| 91福利精品视频| 中文字幕无码精品亚洲资源网久久| ww久久综合久中文字幕| 蜜桃免费在线| 午夜一区二区三视频在线观看| 免费在线日韩av| 寂寞少妇一区二区三区| 欧美性理论片在线观看片免费| 国产98在线|日韩| 欧美日韩亚洲网| 亚洲成人av电影在线| 久久av红桃一区二区禁漫| 欧美亚一区二区三区| 国产白丝一区二区三区| 一个人免费观看视频www在线播放| 欧美国产激情一区二区三区蜜月| 青青青青久久精品国产一百度| 国产精品18久久久久久久久久| 国产免费中文字幕| 亚洲国产高清一区| 中文字幕欧美视频| 成年人黄色网址| 在线亚洲精品| 欧美性爽视频| 亚洲成a人片77777kkkk| 亚洲精品人妻无码| 色婷婷亚洲十月十月色天| 51xtv成人影院| 99热这里只有精| 欧美四级在线| 亚洲性xxxx| 欧美一区二区色| 日韩中文字幕在线| 一区二区动漫| 天堂网2014av| 日韩成人午夜| 在线欧美日韩国产| 99精彩视频在线观看免费| 精品久久久久99| 日韩精品一区在线| 美女999久久久精品视频| 少妇大叫太粗太大爽一区二区| 色综合久久中文综合久久97| 激情综合网俺也去| 国产精品一区二区黑丝| 亚洲欧美综合久久久久久v动漫| 国产欧美一区二区三区视频| 风间由美中文字幕在线看视频国产欧美| 精品福利网址导航| 91超薄肉色丝袜交足高跟凉鞋| 91久久久久久久久久| 亚洲免费视频一区二区三区| 欧美性猛交xxxx久久久| 亚洲а∨天堂久久精品喷水| 亚洲最大成人网4388xx| 91精品国产丝袜白色高跟鞋| 欧美黑人xx片| 日韩中文字幕免费在线| 欧美韩日一区二区三区| 美女亚洲一区| 久久人人97超碰精品888| 成人激情视屏| 日韩中文字幕一区二区三区| 老司机2019福利精品视频导航| 动漫h在线观看| 不卡视频一区二区三区| 日韩精品免费| 国模吧精品人体gogo| 亚洲污视频在线观看| 国内高清免费在线视频| 欧美欧美天天天天操| 国产综合香蕉五月婷在线| 日日干夜夜操s8| 蜜臀视频在线观看| 国产黄色av免费看| 欧美精选视频一区二区| 色偷偷偷亚洲综合网另类| 日本精品一二三区| 欧美欧美欧美欧美首页| 日韩毛片精品高清免费| 捆绑变态av一区二区三区| 精品国产一区二区三区不卡| 国产不卡视频一区二区三区| 26uuu亚洲国产精品| 一级片一区二区三区| 国产精品va在线播放我和闺蜜| 亚洲黄色一区二区三区| 精品久久久久久久久久久aⅴ| 久久久久久国产精品免费免费| 久久久久国产精品一区三寸| 成人观看免费视频| 免费男女羞羞的视频网站中文字幕妖精视频| 色综合久久av| 国产在线观看一区二区| 婷婷成人激情| 色狠狠久久av五月综合|| 在线综合色站| 久久伊99综合婷婷久久伊| 精品国产亚洲一区二区三区大结局| 中文字幕第3页| 国产精品视频一区二区三区综合| 韩国一级黄色录像| 色中色综合网| 成年人三级网站| 亚洲国产综合在线| 一出一进一爽一粗一大视频| 红桃成人av在线播放| 欧美日韩午夜剧场| 亚洲欧美另类小说视频| 第九色区av在线| 7788色淫网站小说| 可以免费在线看黄的网站| 国产色产综合色产在线视频| 欧美激情亚洲精品| 国产精品18久久久久网站| 一区三区三区不卡| 婷婷在线免费观看| 看片网站在线观看| 欧美特级黄色录像| 日韩www.| 亚洲三区欧美一区国产二区| 日本青青草视频| 精品国产免费人成电影在线观看四季| **女人18毛片一区二区| 美女被男人操网站| f2c人成在线观看免费视频|