【數據庫下】 第四章 查詢處理(查詢優化)


第四章 查詢處理(查詢優化)

學習目標
查詢優化的目的
查詢優化的步驟
一、概述

關系數據庫系統的查詢優化

  • 查詢優化在關系數據庫系統中有着非常重要的地位。
  • 關系查詢優化是影響RDBMS性能的關鍵因素。
  • 由於關系表達式的語義級別很高,RDBMS可以從關系表達式中分析查詢語義,為執行查詢優化提供了可能。

查詢優化的優點不僅在於用戶不必考慮如何最好地表達查詢以獲得較好的效率,而且在於系統可以比用戶程序的“優化”做得更好 :
1)查詢優化器可以從數據字典中獲取許多統計信息,而用戶程序則難以獲得這些信息;
2)如果數據庫的物理統計信息改變了,系統可以自動對查詢重新優化以選擇相適應的執行計划。在非關系數據庫系統中必須重寫程序,而重寫程序在實際應用中往往是不太可能的;

3)查詢優化器可以考慮數百種不同的執行計划,程序員一般只能考慮有限的幾種可能性;
4)查詢優化器中包括了很多復雜的優化技術,這些優化技術往往只有最好的程序員才能掌握。
系統的自動優化相當於使得所有人都擁有這些優化技術。

RDBMS通過某種代價模型計算出各種查詢執行策略的執行代價,然后選取代價最小的執行方案。

集中式數據庫

​ 執行開銷主要包括:

​ 磁盤存取塊數(I/O代價)

​ 處理機時間(CPU代價)

​ 查詢的內存開銷
I/O代價是最主要的

分布式數據庫

​ 總代價=I/O代價+CPU代價+內存代價+通信代價

查詢優化的總目標:

  • 選擇有效的策略
  • 求出給定關系表達式的值
  • 使得查詢代價最小(實際上是較小)

查詢優化步驟

  1. 將查詢轉換成某種內部表示,通常是語法樹;
  2. 根據一定的等價變換規則把語法樹轉換成標准(優化)形式;
  3. 選擇低層的操作算法:
    對於語法樹中的每一個操作:
    計算各種執行算法的執行代價
    選擇代價小的執行算法
  4. 生成查詢計划(查詢執行方案):
    查詢計划是由一系列內部操作組成的。
  [例1] 查詢選修了2號課程的學生姓名,用SQL表達:
        SELECT  Student.Sname
	      FROM  Student,SC
	      WHERE  Student.Sno=SC.Sno AND SC.Cno=‘2’; 

假定學生-課程SC中有1000個學生記錄,10000個選課記錄
其中選修2號課程的選課記錄為50個 
image-20210924104632393 image-20210924104747134 image-20210924104818780 image-20210924104838019 image-20210924104915170 image-20210924104948061

查詢優化任務及過程

1)查詢優化的基本過程? 
討論1.查詢優化涉及哪些方面,大致過程?
image-20210924105251453

優化的查詢樹&執行計划

3) DBMS生成最終執行計划的內涵?
image-20210924105448811

二、關系表達式的轉換

1.用於表達式轉換的等價規則
1)什么是等價規則,常用的有哪些? 
討論2.關系表達式進行等價轉換的依據是什么?

image-20210924105617860

image-20210924105647054 image-20210924105744713
等價規則(1)
等價規則有哪些,規則的用途? 
image-20210924110023938 image-20210924110045056 image-20210924110112108 image-20210924110211275 image-20210924110253815
2.等價規則的圖示化
image-20210924110346768

三 查詢樹的基本優化策略

1.“選擇下移”優化策略
1)“選擇下移”有何優化效果?
討論3.如何利用等價規則進行關系表達式的轉換?
image-20210924110537174

“選擇下移”查詢樹優化過程

image-20210924110559960
2.“投影下移”優化策略
image-20210924110700641

“投影下移”查詢樹優化過程

image-20210924110737253
3.“選擇連接順序”優化策略
image-20210924110858495

“選擇連接順序”查詢樹優化過程

image-20210924110925347

例子

查詢:“張三”老師所在學院的預算和地址。

image-20210924111036076
4.執行計划
4)什么是“執行計划”,如何形成?
image-20210924111125734
總結
基本知識:
查詢優化的步驟
關系代數優化的方法
擴展學習:
查詢優化器如何進行設計?


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM