事物處理
概念
事務 :完成一個業務邏輯所涉及的一組具有ACID特性的數據庫操作。
事務管理器( Transaction Manager ):負責對數據庫的改變記錄日誌,以支持系統崩潰後的恢復。
併發控制器: 保障事務的併發執行,以支持多用戶訪問。
ACID特性:
- 原子性(Atomicity)
原子性是指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。- 一致性(Consistency)
事務前後數據的完整性必須保持一致。- 隔離性(Isolation)
事務的隔離性是多個用戶併發訪問數據庫時,數據庫爲每一個用戶開啓的事務,不能被其他事務的操作數據所幹擾,多個併發事務之間要相互隔離。- 持久性(Durability)
持久性是指一個事務一旦被提交,它對數據庫中數據的改變就是永久性的,接下來即使數據庫發生故障也不應該對其有任何影響
DBMS數據存取處理過程
- APP向DBMS發出訪問數據庫的命令,其中包含關係名和查詢條件;
- DBMS讀取數據字典,檢查是否存在該關係和相應字段,並對該命令進行語法和用戶權限檢查。如果檢查通過,則執行該命令,否則拒絕並返回出錯信息;
- 執行該命令時,首先根據數據字典中的定義將命令中的外模式映射到模式,確定應該讀取哪些記錄;
- 根據數據字典中的定義信息,將模式映射到內模式,確定應該讀入哪些物理記錄及有關的地址信息;
- DBMS向操作系統OS發送讀取該記錄的命令;
- OS執行讀取數據的有關操作,從指定地址讀取記錄並存入系統緩衝區;
- DBMS將系統緩衝區中的數據轉換爲模式並進而轉換爲外模式;
- DBMS將系統緩衝區外模式形式的記錄返回給應用程序;
- DBMS將運行情況登記在運行日誌中;
- DBMS將命令執行狀態返回應用程序;
- 若應用程序中的命令需讀取多條記錄,則反覆執行4-10步。
SQL查詢處理過程
- 查詢分析和詞法、語法解析、語義檢查 、約束檢查
- 將 SQL 查詢轉換爲關係代數,選擇邏輯查詢計劃
- 選擇物理查詢計劃,在物理查詢計劃中指明運算的具體順序和用於實現每一個運算的算法
邏輯查詢計劃:是一個代數表達式,表示要在數據上執行的若干個具體運算以及有關運算順序。
查詢處理的步驟:
- 語法分析與翻譯
- 掃描、識別SQL語句,詞法、語法解析,判斷是否符合SQL語法規則
- 關係名是否存在,一些約束檢查
- SQL轉換爲內部表示式(語法分析樹、關係代數表達式)
- 優化
- 選擇一個高效的查詢執行計劃(選擇依據:代價的高低)
- 執行
- 按計劃執行,並輸出結果
查詢優化
一個查詢有多個表達方式:如 和
每一個關係代數運算通常有多種計算方法(執行計劃),不同的執行計劃有不同的代價。
從所有等價的執行計劃中選擇代價最小的一個。
- 基於代價的優化
- 啓發式優化
基於代價的優化
代價是利用數據庫目錄(catalog )中的統計信息估算而得的,如:每個關係中的元組數,每個元組的長度,等等。
關鍵問題:如何度量查詢代價、執行關係代數運算的算法、如何進行單元運算的組合,以實現整個表達式計算、如何優化查詢,即如何找到代價最小的查詢執行計劃。
代價估算:
大型數據庫系統中,最主要的代價是磁盤存取代價包括:平均尋道代價,平均讀塊代價,平均寫塊代價
爲簡單起見 ,只考慮磁盤塊的傳輸時間和搜索時間:tr
– 傳輸時間 ts
– 搜索時間
S
次尋道和 b
個磁盤塊傳輸 的代價爲:b * tr+ S * ts
忽略:
- CPU 代價
- 將最終結果寫回磁盤 的代價
- 數據已在緩衝區
笛卡爾積
選擇
使用索引的選擇
涉及比較的選擇
投影
排序
嵌套循環連接
索引連接
散列連接
歸併連接
啓發式優化準則
- 選擇和投影儘早執行(選擇 、投影)
- 執行連接之前關係進行預處理(index、sort)
- 某些選擇 + 笛卡爾積 => 連接
- 將常用查詢的優化結果(執行計劃)存於系統中