亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > SQL Server 2016 查詢存儲性能優(yōu)化小結

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

熱門標簽:樂昌電話機器人 地圖標注跑線下市場 地圖標注可以編輯地名嗎 臺灣外呼系統(tǒng)軟件 南通智能外呼系統(tǒng)怎么樣 真3地圖標注 南京怎么申請400這種電話 濮陽清豐400開頭的電話申請 疫情時期電話機器人

作為一個DBA,排除SQL Server問題是我們的職責之一,每個月都有很多人給我們帶來各種不能解釋卻要解決的性能問題。

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

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

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

查詢存儲(Query Store)——我的對手

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

CREATE DATABASE QueryStoreDemo
GO

USE QueryStoreDemo
GO

-- Enable the Query Store for our database
ALTER DATABASE QueryStoreDemo
SET QUERY_STORE = ON
GO

-- Configure the Query Store
ALTER 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

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

-- Create a new table
CREATE 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 records
DECLARE @i INT = 1
WHILE (@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 += 1
END
GO

為了訪問我們的表,我額創(chuàng)建了一個簡單的存儲過程,傳入value值作為過濾謂語。

-- Create a simple stored procedure to retrieve the data
CREATE PROCEDURE RetrieveCustomers
(
 @Value INT
)
AS
BEGIN
 SELECT * FROM Customers
 WHERE Value  @Value
END
GO

現(xiàn)在我用80000的參數(shù)值來執(zhí)行存儲過程。

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

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

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

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

現(xiàn)在有人再次調用你的存儲過程,這次輸入?yún)?shù)值是1。這次執(zhí)行計劃不一樣,因為現(xiàn)在在執(zhí)行計劃里你會有書簽查找。SQL Server估計行數(shù)是1,在非聚集索引里沒有找到任何行。因此與非聚集索引查找結合的書簽查找才有意義,因為這個查詢是有選擇性的。

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

-- Execute the stored procedure
EXEC RetrieveCustomers 1
GO

-- 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 80000
GO

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

當你再次看實際的執(zhí)行計劃,在你面前你會看到有一個計劃回歸,因為SQL Server剛重用了書簽查找的的計劃緩存。剛才你有聚集索引掃描運算符的執(zhí)行計劃。這是SQL Server里參數(shù)嗅探的副作用。

讓我們通過查詢存儲來詳細了解這個問題。在SSMS里的對象資源管理器里,SQL Server 2016提供了一個新的結點叫查詢存儲,這里你會看到一些報表。

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

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

如你所見,查詢存儲捕獲了2個不同的執(zhí)行計劃,一個ID是7,一個ID是8。當你點擊計劃ID時,SQL Server會在報表的最下面為你顯示估計的執(zhí)行計劃。

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

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

現(xiàn)在當你執(zhí)行存儲過程(用80000的輸入?yún)?shù)值),在執(zhí)行計劃里你可以看到聚集索引掃描,執(zhí)行計劃只生成419個邏輯讀——很簡單,是不是?絕對不是!?。。?br />

微軟告訴我們只給修正SQL Server性能相關的“新方式”。你只是強制了特定的計劃,一切都還好。這個方法有個大的問題,因為性能問題的根源并沒有解決!這個問題的關鍵是因為書簽查找計劃沒有穩(wěn)定性。取決于首次執(zhí)行計劃默認的輸入值,執(zhí)行計劃因此就被不斷重用。

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

小結

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

您可能感興趣的文章:
  • SQL Server 2016 無域群集配置 AlwaysON 可用性組圖文教程
  • Sql Server2016 正式版安裝程序圖解教程
  • SQL Server 2016正式版安裝配置過程圖文詳解
  • SQL Server2016正式版安裝配置方法圖文教程
  • SQL Server 2016的數(shù)據(jù)庫范圍內(nèi)的配置詳解
  • SQL Server 2016 配置 SA 登錄教程

標簽:南京 陜西 福建 河北 廣安 馬鞍山 阿里 通遼

巨人網(wǎng)絡通訊聲明:本文標題《SQL Server 2016 查詢存儲性能優(yōu)化小結》,本文關鍵詞  SQL,Server,2016,查詢,存儲,;如發(fā)現(xiàn)本文內(nèi)容存在版權問題,煩請?zhí)峁┫嚓P信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server 2016 查詢存儲性能優(yōu)化小結》相關的同類信息!
  • 本頁收集關于SQL Server 2016 查詢存儲性能優(yōu)化小結的相關信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久99中文字幕| 国产麻豆精品hdvideoss| 精品国产三级a| 精品国产三级a| 亚州视频一区二区| 国产国语在线播放视频| 成人免费一级纶理片| 国产极品精频在线观看| 日韩一级黄色大片| 亚洲wwwwww| 毛片高清| 高清一级片| 高清一级淫片a级中文字幕 | 国产成人精品影视| 四虎久久精品国产| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 99色精品| 亚洲女人国产香蕉久久精品| 青草国产在线| 国产一区二区精品在线观看| 999久久狠狠免费精品| 一级毛片视频免费| 欧美一级视| 国产视频一区二区三区四区| 亚洲 欧美 成人日韩| 国产麻豆精品| 久久成人亚洲| 午夜激情视频在线观看| 日本特黄特色aa大片免费| 亚洲天堂一区二区三区四区| 精品久久久久久中文字幕2017| 欧美a级v片不卡在线观看| 精品视频在线观看视频免费视频| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久草免费在线视频| 99久久精品国产国产毛片 | 精品国产一区二区三区国产馆| 国产一级生活片| 欧美另类videosbestsex高清| 国产a免费观看| 久久国产精品只做精品| 成人免费一级纶理片| 日韩男人天堂| 欧美激情一区二区三区在线| 久久精品店| 四虎影视久久久| 国产不卡在线观看视频| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 免费国产在线视频| 亚洲精品久久玖玖玖玖| 久草免费在线视频| 国产一区二区高清视频| 国产亚洲精品aaa大片| 亚洲天堂在线播放| 免费毛片播放| 亚欧视频在线| 久草免费在线视频| 青青青草影院 | 九九久久国产精品大片| 日韩在线观看网站| 你懂的日韩| 精品国产香蕉在线播出 | 成人免费网站久久久| 韩国毛片 免费| 九九精品影院| 91麻豆精品国产综合久久久| 亚洲天堂一区二区三区四区| 91麻豆精品国产自产在线| 精品视频免费看| 成人a级高清视频在线观看| 国产一区二区精品| 国产网站免费视频| 成人免费观看男女羞羞视频| 色综合久久天天综合观看| 精品视频免费观看| 久久久久久久久综合影视网| 欧美另类videosbestsex视频 | 国产激情一区二区三区| 999久久66久6只有精品| 国产国产人免费视频成69堂| 国产a网| 久久久久久久免费视频| 韩国三级视频在线观看| 国产一区二区精品久久91| 免费一级生活片| 国产视频一区二区在线播放| 可以免费看毛片的网站| 999精品视频在线| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 沈樵在线观看福利| 精品美女| 精品国产一区二区三区久久久蜜臀| 国产一区二区高清视频| 韩国三级香港三级日本三级| 精品视频在线观看视频免费视频 | 黄色免费三级| 欧美a免费| 欧美激情一区二区三区视频 | 欧美激情一区二区三区视频| 欧美爱色| 日韩字幕在线| 精品久久久久久中文字幕2017| 日韩免费在线视频| 日日夜夜婷婷| 日韩在线观看免费完整版视频| 九九国产| 欧美激情中文字幕一区二区| 久久国产精品永久免费网站| 999精品在线| 国产综合91天堂亚洲国产| 精品久久久久久中文字幕2017| 高清一级片| 可以在线看黄的网站| 成人影院一区二区三区| 在线观看成人网| 国产一区二区精品久久91| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 成人免费高清视频| 黄视频网站在线看| 国产一区二区精品| 日韩专区一区| 日韩av东京社区男人的天堂| 一级女性全黄生活片免费| 国产一区二区精品| 久久国产精品永久免费网站| 精品视频在线看| 久久福利影视| 免费国产在线视频| 日韩一级黄色| 亚洲 男人 天堂| 精品国产三级a| 日本特黄特色aa大片免费| 国产91精品一区| 国产视频一区二区三区四区| 成人免费高清视频| 久草免费资源| 免费毛片播放| 天天色成人| 国产精品自拍亚洲| 国产不卡在线观看视频| 亚洲女初尝黑人巨高清在线观看| 尤物视频网站在线观看| 九九久久国产精品| 999精品影视在线观看| 国产不卡精品一区二区三区| 亚洲 欧美 成人日韩| 国产不卡在线看| 香蕉视频久久| 国产伦久视频免费观看视频| 九九精品在线播放| 国产激情一区二区三区| 国产极品精频在线观看| 国产精品免费久久| 人人干人人插| 国产伦精品一区二区三区在线观看| 国产韩国精品一区二区三区| 日韩专区亚洲综合久久| 日本伦理黄色大片在线观看网站| 精品视频在线观看一区二区三区| 精品国产一区二区三区久久久蜜臀 | 国产网站麻豆精品视频| 欧美另类videosbestsex| 久久精品店| 午夜欧美福利| 国产网站免费观看| 欧美激情在线精品video| 国产一区二区精品久| 日本免费看视频| 久久久久久久久综合影视网| 久久99爰这里有精品国产| 国产高清在线精品一区a| 黄视频网站在线免费观看| 九九干| 欧美激情一区二区三区在线| 亚洲第一色在线| 久久99这里只有精品国产| 国产综合成人观看在线| 欧美一级视频免费| 欧美a免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 日韩综合| 日韩免费片| 精品国产三级a| 欧美激情一区二区三区在线| 成人免费一级毛片在线播放视频| 青青青草视频在线观看| 欧美激情一区二区三区在线播放| 亚欧视频在线| 亚欧视频在线| 深夜做爰性大片中文| 日本乱中文字幕系列| 国产一区免费观看| 久久成人亚洲| 四虎久久精品国产| 成人免费高清视频| 国产一区二区精品久久91| 国产成人女人在线视频观看| 黄色短视屏| 午夜欧美福利| 亚欧成人乱码一区二区|