《資料庫系統概論》 第九章 關係查詢處理和查詢優化

2021-08-22 08:30:49 字數 1409 閱讀 9706

查詢分析:詞法分析、語法分析

查詢檢查:語義分析、是否有許可權、是否破壞完整性、檢視轉換

查詢優化:代數優化(邏輯優化)和物理優化(基於規則、代價、語義),生成查詢計畫樹

查詢執行:自底向上/自頂向下策略

選擇操作的實現:全表掃瞄/索引掃瞄

連線操作的實現:查詢處理中最常用最耗時的操作之一

在集中式資料庫中,查詢執行開銷主要包括磁碟訪問塊數(io代價)、處理機時間(cpu代價)以及查詢的記憶體開銷

計算查詢代價時一般用查詢處理讀寫的塊數作為衡量單位

選擇運算應盡可能先做

把投影運算和選擇運算同時進行:這兩者都是一元操作,乙個元組能不能成為結果只取決於其本身

把投影同其前或後的雙目運算結合起來

把某些選擇同在它前面要執行的笛卡兒積結合起來稱為乙個連線運算

找出公共子表示式

具體方法:

基於規則的啟發式優化

基於代價估算的優化

兩者結合的優化方法

選擇操作的啟發式規則:

小關係,全表掃瞄

大關係:

1. 若選擇條件是主碼,則可以選擇主碼索引,因為主碼索引一般是被自動建立的

2. 若選擇條件是非主屬性的等職查詢,並且選擇列上有索引,如果選擇比例較小(10%)可以使用索引掃瞄,否則全表掃瞄

3. 若選擇條件是屬性上的非等職查詢或者範圍查詢,同上

4. 對於用and連線的合取選擇條件,若有組合索引,優先用組合索引方法;如果某些屬性上有一般索引,則用索引掃瞄,否則全表掃瞄

5. 對於用or連線的析取選擇條件,全表掃瞄

連線操作的啟發式規則

1. 若兩個表都已經按連線屬性排序,則選用排序-合併演算法

2. 若乙個表在連線屬性上有索引,則使用索引連線方法

3. 若其中乙個表較小,則選用hash join

4. 最後可以使用巢狀迴圈,小表坐外表

統計資訊:資料字典中儲存了優化器需要的優化資訊,包括基本表的元組總數、長度、占用塊數,每個列的不同值的個數、最大/小值、是否有索引,索引的層數、個數、選擇基數等

代價估算例項

資料庫系統概論(第九章關係查詢處理和查詢優化)

關聯式資料庫管理系統查詢處理可以分為4個階段 查詢分析 查詢檢查 查詢優化和查詢執行 查詢分析 詞法分析 語法分析 查詢檢查 語義分析 是否有許可權 是否破壞完整性 檢視轉換 查詢優化 代數優化 邏輯優化 和物理優化 基於規則 代價 語義 生成查詢計畫樹 查詢執行 自底向上 自頂向下策略 選擇操作的...

第九章 資料庫

redis 中資料庫的概念 切換資料庫的命令 select 1 資料庫鍵空間 key space redis 每個資料庫都有乙個資料庫鍵空間,資料庫鍵空間是一種字典結構 dict 字典 expires 字典 設定鍵的生存時間和過期時間 過期字典儲存鍵的過期時間 expire,pexpire,expi...

第九章 資料庫安全

第九章 資料庫安全 9.1.1建立使用者 create user user name identified by password default tablespace def tabspace temproary tablespace temp tabspace 乙個使用者要想連線到資料庫上,就必...