国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

CMU15-445 數據庫系統播客:查詢規劃與優化

數據庫 其他數據庫
什么是謂詞?如何理解? 謂詞是指SQL查詢中用于過濾數據的條件,通常出現在??WHERE??子句中。例如,??e.grade = 'A'??就是一個謂詞。

查詢優化概述

查詢優化在數據庫管理系統(DBMS)中至關重要 。SQL是一種聲明性語言,這意味著用戶告訴DBMS他們想要什么結果,而不是如何獲取結果。然而,執行同一個查詢可以有多種不同的方式(例如,不同的連接算法),而這些執行計劃的性能差異可能非常大。例如,一個表操作可能在1.3小時和0.45秒之間產生巨大差異。因此,DBMS需要一種方法來選擇給定查詢的“最佳”執行計劃,這就是DBMS優化器的職責。

查詢優化非常困難,這被認為是構建DBMS最困難的部分。成功的查詢優化能力可以顯著區分高端數據庫系統(如Oracle、DB2、Teradata、SQL Server)與開源或免費系統(如Postgres,盡管Postgres也很好,但其查詢優化器不如SQL Server復雜)。IBM在20世紀70年代首次實現了查詢優化器,即System R項目。當時,人們認為DBMS無法選擇比人類手寫更好的查詢計劃。然而,System R證明了數據庫系統可以通過優化器生成與人類編寫的計劃一樣好甚至更好的計劃。System R的許多概念和設計決策至今仍在使用。

查詢優化的兩種主要方法

查詢優化主要有兩種方法:

  1. 靜態規則/啟發式規則 (Static Rules / Heuristics)
  • 通過重寫查詢來消除低效或不必要的元素。
  • 這些技術 不需要檢查實際數據 ,但可能需要查閱系統目錄(即元數據)。
  1. 基于成本的搜索 (Cost-based Search)
  • 使用成本模型估算執行計劃的成本。
  • 評估查詢的多個等效計劃,并選擇成本最低的那個。

靜態規則與查詢重寫

靜態規則的核心思想是 關系代數等價性 。如果兩個關系代數表達式或查詢計劃產生相同的元組集合,則它們是等效的。重要的是,這里強調的是“集合”,意味著 不要求結果的順序相同 。這種等價性允許DBMS在不改變最終結果的前提下,通過轉換或重排操作符來找到更高效的執行計劃。這種高級技術通常被稱為 查詢重寫 (Query Rewriting) 。

在查詢優化架構中,SQL查詢首先經過一個可選的 SQL重寫器 ,然后由 解析器 轉換為抽象語法樹。 綁定器 將語法樹中的命名對象(如表、列名)轉換為內部標識符,并查閱系統目錄,生成 邏輯計劃 。邏輯計劃以高層方式描述查詢要做什么(如掃描表、連接表),但不指定具體如何執行。隨后,邏輯計劃可以進入 樹重寫器 ,在這里應用靜態規則進行重寫。

以下是一些常見的靜態規則優化:

謂詞下推 (Predicate Pushdown)

什么是謂詞?如何理解? 謂詞是指SQL查詢中用于過濾數據的條件,通常出現在WHERE子句中。例如,e.grade = 'A'就是一個謂詞。

如何理解下推? 假設SQL查詢被分析并表示為一棵操作樹,謂詞下推就是將過濾操作從樹的較高層(例如,在連接之后)移動到較低層(例如,在連接之前)。

舉例子:把 WHERE 推到 JOIN 之前。 例如,對于一個連接了studentenrolled表的查詢,并且有一個WHERE e.grade = 'A'的條件。最初可能先執行連接,再應用過濾。通過謂詞下推,優化器會先在enrolled表上應用grade = 'A'的過濾,從而在執行連接之前就大大減少參與連接的元組數量。這樣做的目的是 盡早減少數據量 ,從而減少后續操作的工作量。

此外,還可以 重排謂詞的順序 ,優先應用選擇性更高的謂詞(即能過濾掉更多數據的謂詞),以更快地減少處理的數據量。

需要注意的是,并非所有謂詞都適合下推,例如,如果謂詞涉及計算成本較高的用戶定義函數(UDF),數據庫可能會選擇不將其下推。

投影下推 (Projection Pushdown)

在查詢早期階段執行投影操作,只保留查詢所需或連接所需的屬性。

這樣可以 最小化從一個操作符傳遞到下一個操作符的數據量 ,這在行式存儲系統(避免復制寬行中不必要的列)和分布式數據庫(減少網絡傳輸的數據量)中尤為重要。

當DBMS分析SQL查詢并將其轉換為操作樹時,投影下推意味著在查詢執行的早期階段, 只保留查詢所需或后續操作(例如連接操作)所需的屬性(列) 。其他不需要的列會在數據量較小的階段就被“投影掉”,從而避免將它們復制和傳遞到后續的昂貴操作中。

假設有一個SQL查詢,需要從student表和enrolled表中獲取學生姓名(s.name)和課程ID(e.cid),并且兩個表通過s.sid = e.sid進行連接。如果student表有上千個列,但這個查詢只需要其中的sidname列,enrolled表也只需要sidcid列,那么:

  1. 原始(未優化)計劃 :可能會先將student表的全部列和enrolled表的全部列進行連接,然后再對連接后的巨大結果集進行投影,只保留namecid
  2. 應用投影下推后 :優化器會在這兩個表被連接 之前 ,就對student表執行一個投影操作,只保留sidname列;對enrolled表執行投影操作,只保留sidcid列。這樣,在執行連接時,參與連接的元組會更“窄”,大大減少了需要處理的數據量。

這種優化在以下場景中尤為重要:

  • 行式存儲系統(Row-Store Systems) :在行式存儲系統中,如果一個元組非常寬(即有很多列),并且查詢只需要其中的少數幾列,那么過早地將整個寬元組從一個操作符傳遞到下一個操作符會消耗大量內存和I/O。通過投影下推,可以盡早地剔除不必要的列,從而 減少在內存中復制和處理的數據量 。
  • 分布式數據庫(Distributed Databases) :在分布式環境中,數據可能存儲在不同的節點上,并且在執行連接等操作時需要在網絡上傳輸。 網絡I/O是慢且低效的 。如果能在數據傳輸到其他節點之前就進行投影,只發送必要的列,可以顯著 減少網絡傳輸的數據量 和開銷。
  • 減少后續操作的開銷 :當數據量減少后,后續的連接、排序、聚合等操作的處理效率會更高,因為它們需要處理的數據總量更小。

需要注意的是,投影下推對 列式存儲系統(Column-Store Systems) 來說可能不那么重要,因為列式存儲本身就是按列存儲數據,通常在讀取時就只讀取查詢所需的列。

表達式簡化與重寫 (Expression Simplification and Rewriting)

簡化復雜的謂詞表達式。例如,WHERE X = Y AND Y = 3 可以被簡化為 WHERE X = 3 AND Y = 3

合并謂詞 :將多個范圍謂詞合并為更緊湊的形式。例如,WHERE val BETWEEN 1 AND 100 OR val BETWEEN 50 AND 150 可以簡化為 WHERE val BETWEEN 1 AND 150

這些處理屬于 明顯的邏輯優化 ,它們在不查看實際數據內容的情況下,僅憑查詢本身的結構和系統目錄中的元數據(例如,主鍵不能為NULL)即可識別并進行重寫。例如,優化器可以識別并移除不可能的謂詞(如WHERE 1 = 0,總是假)或不必要的謂詞(如WHERE 1 = 1,總是真),或者識別出冗余的自連接。

復雜查詢與基于成本的搜索

對于復雜的查詢,僅僅依靠靜態規則是不夠的。例如, 不同的連接順序 (例如,對于N個表的連接,可能存在4^N種連接順序,這是一個巨大的數字,即卡特蘭數)以及 使用什么連接算法 (如哈希連接與嵌套循環連接的性能差異巨大)等決策, 無法僅通過靜態規則來確定 。此時,就需要 基于成本的搜索 (Cost-based Search) 。

成本模型 (Cost Model)

數據庫系統內部維護一個 成本模型 ,用于 估算每個潛在執行計劃可能產生的成本 。

這個成本是一個 內部的、合成的數字 ,它 只用于在同一DBMS內部比較不同查詢計劃的相對性能 。它與實際的執行時間沒有直接的外部映射關系。

成本估算通常基于多種因素,包括 磁盤I/O次數 、 DRAM(內存)占用量 ,以及在分布式數據庫中, 網絡消息的數量 (因為網絡I/O慢且低效)。

成本模型的核心目的是在 不實際運行查詢計劃 的情況下,近似估算其成本。實際運行查詢是獲得真實成本的唯一方式,但由于可能的計劃數量巨大,這不切實際。

少數系統(如MongoDB)曾采用過簡單的方法,即并行觸發多個查詢計劃,選擇第一個返回結果的計劃,并將其作為后續相同查詢的默認計劃。

統計信息 (Statistics Information)

為了能夠準確估算查詢計劃的成本,DBMS需要 維護關于表結構的內部統計信息 。

這些統計信息通常存儲在 系統目錄 中, 包括表和索引的外觀、元組中的值分布 (如特定列的最小值/最大值、唯一值的數量、直方圖等)。

統計信息的維護 可以通過以下方式進行:

  • 自動更新 :當表數據發生一定比例(如10%)的變化時自動收集。
  • 查詢時收集 :在執行查詢時,DBMS可以查看數據并更新相關統計信息。
  • 手動執行 ANALYZE 命令 :用戶或管理員可以顯式運行ANALYZE函數(在不同系統中有不同的語法,但概念類似),這通常會啟動一次全表掃描,檢查數據并更新內部統計信息。

準確的統計信息對于優化器做出明智的成本估算至關重要 。它們幫助優化器更好地理解數據的分布和選擇性,從而更準確地預測不同操作的開銷。

責任編輯:武曉燕 來源: Piper蛋窩
相關推薦

2025-08-11 02:25:00

數據庫數據模型

2025-08-11 02:00:00

2025-08-06 01:22:00

2025-08-18 07:32:23

2025-08-21 06:39:13

2025-08-04 06:00:00

2025-08-13 07:31:18

2025-08-22 06:49:20

2025-08-06 00:00:00

2025-08-11 07:31:40

2025-08-04 07:31:30

2025-08-14 07:32:42

2025-08-26 03:15:00

2025-08-07 07:31:42

2025-08-08 07:37:07

2025-08-18 01:01:00

樂觀并發控制

2025-08-20 07:40:05

2025-08-26 02:12:00

2025-08-18 05:11:00

數據庫系統播客

2025-08-18 01:23:00

點贊
收藏

51CTO技術棧公眾號

亚洲精品男人| 上原亚衣加勒比在线播放| 国产成人一二| 亚洲视频在线看| 福利在线播放| 亚洲国产精品久久久久秋霞影院| 狠狠干视频网站| 日韩高清在线一区| 99re资源| 中文字幕免费一区二区三区| 欧美怡红院视频一区二区三区 | 自拍偷拍亚洲区| 国产精品vvv| 欧美精品一区二区蜜臀亚洲| 麻豆影院在线| 6080午夜不卡| 国产美女一区视频| 欧美变态口味重另类| 操你啦视频在线| 亚洲电影免费观看高清完整版在线观看 | 精品国产aⅴ| 日本国产精品视频| 国产精品三级| 91亚洲精品一区| 欧美成人一品| 美乳视频一区二区| 国内精品伊人久久久久av影院| 小说区视频区图片区| 成人看片黄a免费看在线| 青青青在线视频播放| 91麻豆免费看片| 男女羞羞网站| 欧美日韩亚洲系列| 日本电影在线观看网站| 日韩网站在线看片你懂的| 中文在线最新版地址| 久久精品久久久久电影| 88久久精品| 亚洲一区免费网站| 强制捆绑调教一区二区| 成人午夜免费在线视频| 国产欧美日韩久久| 日韩精品视频无播放器在线看| 欧美电影一区二区| 性高爱久久久久久久久| 午夜免费在线观看精品视频| 婷婷六月综合| 日韩欧美亚洲在线| 91免费视频网址| 一级毛片在线| 亚洲精品国产拍免费91在线| 日日夜夜精品视频| 国产98在线|日韩| 成人在线一区二区三区| 成人免费xx| 欧美三区在线视频| 日日夜夜一区| 91在线免费看网站| 国内精品在线播放| 精品一二三四| 亚洲成人网久久久| 亚洲精品亚洲人成在线| 精品视频免费观看| 久久免费看少妇高潮| 成人在线免费看| 色系列之999| 欧美私人啪啪vps| 久久精品免费一区二区| 欧美在线制服丝袜| 亚洲一区二区三区中文字幕在线观看| 成人午夜在线影院| 丁香天五香天堂综合| 香蕉影院在线| 伊人久久久久久久久久久| 日韩伦理一区| 亚洲国产精品无码av| 日韩欧美在线播放| 亚洲精品a区| 亚洲精品tv久久久久久久久| www.超碰在线| 日韩最新免费不卡| 亚洲乱亚洲高清| 中文字幕日本最新乱码视频| 久久青草国产手机看片福利盒子| av一区在线观看| 欧美女同在线观看| 久久国产这里只有精品| 91精品久久久久久久久久入口 | 91a在线视频| 国产一区二区三区黄视频| 在线观看国产视频一二三| 欧美性欧美巨大黑白大战| 中文幕av一区二区三区佐山爱| 91精品免费| 2021中文字幕一区亚洲| 手机av免费在线| 日韩免费在线播放| 成人免费在线观看入口| 日韩成人在线一区| 视频一区免费观看| 午夜久久久久久久久| 91久久久久久白丝白浆欲热蜜臀| 国产成人精品免费视频大全最热 | 成人欧美一区二区三区在线| 亚洲高清三级视频| 久久综合色婷婷| 亚洲国产欧美一区二区三区不卡| 一区二区三区中文字幕精品精品| 国产一区二区三区影视| 精品国产综合| 亚洲h在线观看| 国产精品超碰| 国产96在线 | 亚洲| 亚洲第一精品夜夜躁人人爽| 国产精品福利一区| 久久久91麻豆精品国产一区| 中日韩在线视频| 国产手机视频精品| 久久国产生活片100| 国产免费区一区二区三视频免费 | 亚洲成色www久久网站| 天天av天天翘天天综合网色鬼国产| 久久精品嫩草影院| 91亚洲资源网| 色老太综合网| 男人的天堂成人| 亚洲第一视频在线观看| 日韩不卡在线观看日韩不卡视频| 日本中文字幕在线看| 99理论电影网| 欧美视频一区在线| 精品96久久久久久中文字幕无| 一区二区三区区四区播放视频在线观看 | 亚洲第一中文字幕| 麻豆91在线播放免费| 牛牛在线精品视频| 丝袜足脚交91精品| 亚洲精品在线电影| 国内精品免费在线观看| 婷婷激情一区| 国产裸体舞一区二区三区| 欧美激情在线观看视频| 国产精品超碰97尤物18| 国产一区二区精品福利地址| 在线免费观看色| 操一操视频一区| 欧美性高潮床叫视频| 国产精品99一区二区| 黄色网址在线播放| 欧美久久久久久| 日韩电影中文 亚洲精品乱码 | 96sao精品视频在线观看| 91激情在线视频| 宅男噜噜噜66一区二区| 影院在线观看全集免费观看| 亚洲午夜精品久久| 最新国产成人av网站网址麻豆| 91免费版在线| 欧美丝袜美腿| 亚洲大胆精品| 热re99久久精品国产99热| 国产手机视频精品| 中文字幕制服丝袜一区二区三区 | 1024免费在线视频| 亚洲精品一区二区三区av| 国产一区二区三区在线播放免费观看| 久久久久国产精品人| 999视频精品| av免费在线观看网址| 欧美国产视频一区| 国产成人短视频| 欧美一区二区视频观看视频 | 亚洲福利电影网| 久久亚洲图片| 成人网av.com/| 青青草观看免费视频在线 | 日韩不卡一二三区| 动漫一区二区三区| 国产免费视频在线| 日韩黄色片在线| 91精品免费视频| 色一区av在线| 日本二三区不卡| 91在线精品一区二区| 欧美久久九九| 久久天堂久久| 麻豆免费在线观看| 日本激情综合网| 日韩欧美一区二区三区四区 | 成人在线视频播放| 黄页视频在线观看| 一区一区视频| 国产精品免费看久久久香蕉| 日韩欧美资源站| 亚洲精品第一国产综合野| 免费精品99久久国产综合精品| 欧美深夜视频| 亚洲天堂导航| 国产福利在线观看| 99re99|