五月天堂网_免费看影片_1024手机看毛片_亚洲综合四区_男人的天堂影院_在线亚洲自拍

中培偉業(yè)IT資訊頻道
您現(xiàn)在的位置:首頁 > IT資訊 > 數(shù)據(jù)庫 > SQL Server查詢優(yōu)化器如何工作

SQL Server查詢優(yōu)化器如何工作

2020-08-31 17:43:04 | 來源:中培企業(yè)IT培訓(xùn)網(wǎng)

在眾多數(shù)據(jù)庫當(dāng)中,SQL Server是我們比較常見的數(shù)據(jù)庫。因此對于許多新手來說,對于SQL Server數(shù)據(jù)庫查詢優(yōu)化器如何工作并不清楚。SQL Server 數(shù)據(jù)庫引擎的核心是兩個主要組件:存儲引擎和查詢處理器(也稱為關(guān)系引擎)。存儲引擎:以優(yōu)化并發(fā)性并同時保持?jǐn)?shù)據(jù)完整性的方式照顧磁盤和內(nèi)存之間的數(shù)據(jù)讀取。查詢處理器:1.負(fù)責(zé)通過Query Optimizer設(shè)計查詢計劃;2.由Execution Engine根據(jù)該計劃執(zhí)行查詢。

  查詢處理器執(zhí)行以下操作:

1.查詢解析

2.將查詢綁定到對象

3.生成可能的執(zhí)行計劃

4.每個計劃的成本評估

  執(zhí)行引擎執(zhí)行以下操作:

1.查詢執(zhí)行

2.計劃緩存

解析將SQL查詢轉(zhuǎn)換為初始樹表示形式。綁定主要涉及名稱解析。

  搜索空間

我們將給定查詢的搜索空間定義為該查詢的所有可能執(zhí)行計劃的集合,并且該搜索空間中的任何可能計劃都返回相同的結(jié)果。

  生成候選人執(zhí)行計劃

如前所述,查詢優(yōu)化器的基本目的是為您的查詢找到有效的執(zhí)行計劃。即使對于相對簡單的查詢,也可能有很多不同的方法來訪問數(shù)據(jù)以產(chǎn)生相同的最終結(jié)果。因此,查詢優(yōu)化器必須從可能的大量候選執(zhí)行計劃中選擇最佳的計劃,并且做出明智的選擇非常重要,因為將結(jié)果返回給用戶的時間可能會有所不同瘋狂,取決于選擇哪個計劃。

查詢優(yōu)化器必須在優(yōu)化時間和計劃質(zhì)量之間取得平衡。SQL Server不會進行詳盡的搜索,而是嘗試盡快找到合適的有效計劃。

  評估每個計劃的成本

查詢優(yōu)化器需要估算這些計劃的成本,然后選擇成本最低的計劃。為了估算計劃的成本,它使用考慮了I / O,CPU和內(nèi)存等資源使用的成本核算公式來估算該計劃中每個物理操作員的成本。

基數(shù)估計:查詢計劃的成本估計主要取決于物理操作員使用的算法以及估計需要處理的記錄數(shù);記錄數(shù)量的這種估計稱為基數(shù)估計。

  查詢執(zhí)行和計劃緩存

優(yōu)化查詢后,執(zhí)行引擎將使用生成的計劃來檢索所需的數(shù)據(jù)。生成的執(zhí)行計劃可以存儲在內(nèi)存中,在計劃緩存中,以便在再次執(zhí)行同一查詢時可以重新使用它。

但是,對于給定查詢,重用現(xiàn)有計劃可能并不總是最佳解決方案。根據(jù)表中數(shù)據(jù)的分布,給定查詢的最佳執(zhí)行計劃可能會根據(jù)所述查詢中提供的參數(shù)而有很大差異,并且稱為參數(shù)嗅探的行為可能會導(dǎo)致選擇次優(yōu)計劃。

即使執(zhí)行計劃在計劃緩存中可用,某些元數(shù)據(jù)更改或?qū)?shù)據(jù)庫內(nèi)容所做的足夠大的更改也可能使現(xiàn)有計劃無效或次優(yōu),從而導(dǎo)致現(xiàn)有計劃無效從計劃緩存中丟棄并生成新的優(yōu)化。

  重新編譯

您可以強制SQL Server每次運行時重新編譯存儲過程。這樣做的好處是,每次運行時都會創(chuàng)建最佳查詢計劃。但是,重新編譯是占用大量CPU的操作。對于經(jīng)常運行的存儲過程或在已經(jīng)受到CPU資源限制的服務(wù)器上,這可能不是理想的解決方案。要記住的另一件事是,這些計劃不會存儲在緩存中,這使它們更難找到是否有問題。

ALTER PROCEDURE Get_OrderID_OrderQty

@ProductID INT

WITH RECOMPILE

AS

SELECT SalesOrderDetailID, OrderQty

FROM Sales.SalesOrderDetail

WHERE ProductID = @ProductID;

提示

另一個選擇是使用OPTIMIZE FOR查詢提示。這告訴SQL Server在編譯計劃時使用指定的值。如果通過測試可以找到每次生成“足夠好的”計劃的值,并且鼠標(biāo)和大象的性能都可以接受,那么這對您來說是一個不錯的選擇。

但是,請了解您正在引導(dǎo)查詢優(yōu)化器。您說的是您的最佳想法。OPTIMIZE FOR的最大缺點在于數(shù)據(jù)分布發(fā)生變化的表。更改速度越快,此提示可能會過時。如果您提供的價值在一個月或一年中不是最優(yōu)的,該怎么辦?您需要有一種定期檢查和修訂此方法的方法。

ALTER PROCEDURE Get_OrderID_OrderQty

@ProductID INT

AS

SELECT SalesOrderDetailID, OrderQty

FROM Sales.SalesOrderDetail

WHERE ProductID = @ProductID

OPTION (OPTIMIZE FOR (@ProductID=945));

現(xiàn)實情況是,即使經(jīng)過30多年的研究,查詢優(yōu)化器還是非常復(fù)雜的軟件,仍然面臨一些技術(shù)挑戰(zhàn)。結(jié)果,即使在為Query Optimizer提供了所需的所有信息之后,甚至在似乎沒有任何明顯問題的情況下,您仍然可能無法獲得有效的計劃。

通過上述介紹,SQL Server查詢優(yōu)化器如何工作相信大家已經(jīng)清楚了吧,想了解更多關(guān)于SQL Server數(shù)據(jù)庫信息,請繼續(xù)關(guān)注中培偉業(yè)。

標(biāo)簽: SQL Server 數(shù)據(jù)庫
主站蜘蛛池模板: 少妇被粗大的猛烈进出动视频 | 国女人xxxxx69免费大全 | 国产精品久久久久久久久久98 | 儿媳在线观看 | 日本aa在线| " 欧美特黄特色三级视频在线观看" | 久久一区二区三区精华液 | 无码人妻精品中文字幕 | 毛片网子 | 男人的天堂日本 | 国产高潮视频在线观看 | 51偷拍视频区视频免费观看 | 天天添天天操 | 精品国产网址 | 国产无遮挡又黄又爽对白视频 | 久久超碰精品 | 青春草在线视频免费观看 | 337p日本欧洲亚洲大胆精蜜臀 | A片丰满少妇A片在线播放 | 日本成本人片无码免费视频网站 | 国产成人资源手机免费看a 狠狠爱欧美 | 石原莉奈在线观看视频 | 国产又粗又硬又黄视频免费着 | 福利片一区二区三区 | 综合自拍偷拍 | 天天躁日日躁狠狠很躁2023 | 黑色极品jk撕破丝袜自慰喷白浆 | 青青草手机视频在线观看 | 日韩欧美多p乱免费视频 | 国产精品91在线 | cctv6节目单 强奷人妻日本中文字幕 | 正在播放国产第九十二 | 亚洲色AV性色在线观看 | 欧美日韩一区二区三区在线观看 | 国内国内在线自偷第68页 | 亚洲久久超碰无码色中文字幕 | 亚洲精品v日韩精品 | 中文字幕.av.在线 | 一级女性黄色生活片 | 亚洲 欧美 日韩 综合aⅴ视频 | 青青青青久久精品国产 |