資料庫原理 九

2021-09-02 09:45:14 字數 2736 閱讀 5805

關係查詢處理和查詢優化

1.關聯式資料庫管理系統的查詢處理步驟

2.查詢優化的概念

3.基本方法和技術

代數優化:指關係代數表示式的優化

物理優化:指儲存路徑和底層操作演算法的選擇

sql語句處理過程

查詢處理步驟:

四個階段

1.查詢分析

2.查詢檢查

3.查詢優化

4.查詢執行

查詢語句->詞法分析/語法分析->有效性檢查/檢視轉換/安全性檢查/完整性檢查->查詢樹->代數優化/物理優化等->查詢執行計畫->**生成->查詢計畫/執行**

選擇操作典型實現方法:

(1) 全表掃瞄方法 (table scan)

l對查詢的基本表順序掃瞄,逐一檢查每個元組是否滿足選擇條件,把滿足條件的元組作為結果輸出

l適合小表,不適合大表

(2)索引掃瞄方法 (index scan)

l適合於選擇條件中的屬性上有索引(例如b+樹索引或hash索引)

l通過索引先找到滿足條件的元組主碼或元組指標,再通過元組指標直接在查詢的基本表中找到元組

全表掃瞄演算法

n假設可以使用的記憶體為m塊,全表掃瞄演算法思想:

①按照物理次序讀student的m塊到記憶體

②檢查記憶體的每個元組t,如果滿足選擇條件,則輸出t

③如果student還有其他塊未被處理,重複①和②

連續操作的實現

(1)巢狀迴圈演算法(nested loop join)

(2)排序-合併演算法(sort-merge join 或merge join)

(3)索引連線(index join)演算法

(4)hash join演算法

9.2 關係資料庫系統的查詢優化

9.2.1查詢優化概述

關聯式資料庫管理系統通過某種代價模型計算出各種查詢執行策略的執行代價,然後選取代價最小的執行方案

(1)集中式資料庫

執行開銷主要包括

ø磁碟訪問塊數(i/o代價)

ø處理機時間(cpu代價)

ø查詢的記憶體開銷

i/o代價是最主要的  

(2)分布式資料庫

總代價=i/o代價+cpu代價+記憶體代價+通訊代價

9.2.2乙個例項

乙個關係查詢可以對應不同的執行方案,其效率可能相差非常大。

例如:求選修了2號課程的學生姓名。

第一種q1:計算廣義笛卡爾積,作選擇和投影

第二種q2:計算自然連線,作選擇和投影

第三種q3:先做選擇,再做自然連線和投影

※有選擇和連線操作時,先做選擇操作,這樣參加連線的元組就可以大大減少,這是代數優化

※在q3中sc表的選擇操作演算法有全表掃瞄或索引掃瞄,經過初步估算,索引掃瞄方法較優。

對於student和sc表的連線,利用student表上的索引,採用索引連線代價也較小,這就是物理優化。

9.3 代數優化

查詢樹的啟發式優化

(1)選擇運算應盡可能先做——在優化策略中這是最重要、最基本的一條。

(2)把投影運算和選擇運算同時進行

如有若干投影和選擇運算,並且它們都對同乙個關係操作,則可以在掃瞄此關係的同時完成所有的這些運算以避免重複掃瞄關係。

(3) 把投影同其前或其後的雙目運算結合起來,沒有必要為了去掉某些欄位而掃瞄一遍關係。

(4) 把某些選擇同在它前面要執行的笛卡爾積結合起來成為乙個連線運算,連線特別是等值連線運算要比同樣關係上的笛卡爾積省很多時間。

9.4 物理優化

v代數優化改變查詢語句中操作的次序和組合,不涉及底層的訪問路徑

v物理優化就是要選擇高效合理的操作演算法或訪問路徑,求得優化的查詢計畫

9.4.1  基於啟發式規則的訪問路徑選擇優化

1.選擇操作的啟發式規則

ⅰ 對於小關係,使用全表順序掃瞄,即使選擇列上有索引

ⅱ 對於大關係,啟發式規則有:

(1)對於選擇條件是「主碼=值」的查詢

l查詢結果最多是乙個元組,可以選擇主碼索引

l一般的關聯式資料庫管理系統會自動建立主碼索引

(2)對於選擇條件是「非主屬性=值」的查詢,並且選擇列上有索引或者對於選擇條件是屬性上的非等值查詢或者範圍查詢,並且選擇列上有索引

要估算查詢結果的元組數目

l如果比例較小(<10%)可以使用索引掃瞄方法

l否則還是使用全表順序掃瞄

(3)對於用and連線的合取選擇條件

如果有涉及這些屬性的組合索引,優先採用組合索引掃瞄方法

如果某些屬性上有一般的索引,可以用索引掃瞄方法

l通過分別查詢滿足每個條件的指標,求指標的交集

l通過索引查詢滿足部分條件的元組,然後在掃瞄這些元組時判斷是否滿足剩餘條件

其他情況:使用全表順序掃瞄

(4)對於用or連線的析取選擇條件,一般使用全表順序掃瞄

2.連線操作的啟發式規則

(1)如果2個表都已經按照連線屬性排序——選用排序-合併演算法

(2)如果乙個表在連線屬性上有索引——選用索引連線演算法

(3)如果上面2個規則都不適用,其中乙個表較小——選用hash join演算法

(4)可以選用巢狀迴圈方法,並選擇其中較小的表,確切地講是占用的塊數(b)較少的表,作為外表(外迴圈的表) 。

資料庫原理

基本內容 acid與cap 資料庫事務可能引發的問題 資料庫鎖的型別 封鎖協議 兩段鎖協議 資料庫隔離級別 mvcc的實現步驟 mysql事務如何實現 資料庫鎖如何實現 xa兩段提交協議。1.acid是資料庫事務正確執行的四個基本要素 原子性 事務是資料庫併發控制的最小單位,要麼全部提交成功,要麼全...

資料庫原理

資料庫是乙個以某種有組織的方式儲存的資料集合。也就是 儲存有組織資料的容器 乙個檔案或一組檔案 儲存資料的工具,或者說是儲存資料的集合,結構為 模式 內模式 外模式,由dbms 資料庫作業系統 來控制,達到管理資料的目的 特點 兩大資料模型 注 關係與非關聯式資料庫 資料庫三層次 我們要將資料存放到...

資料庫原理

資料建模分類 對資料建模的模型分類,分為以下兩大類 概念模型 又叫資訊模型 按照使用者觀點對現實世界資料進行建模 例如 實體 聯絡模型 e r模型 資料模型 按照計算機系統的觀點對現實世界資料進行建模 例如 關係模型 資料模型三要素 資料結構 資料操作 資料的完整性約束條件 對 的補充 資料的完整性...