數據庫管理系統的層次結構--數據存取層和緩衝區管理

一、數據庫管理系統的層次結構之數據存取層
數據存取介於語言處理層和數據存儲層之間。它向上提供單元組接口,即導航式的一次一個元組的存取操作;向下則以系統緩衝區的存儲器接口作爲實現基礎。接口關係如下:

數據存儲層所涉及的主要數據結構爲邏輯數據記錄、邏輯塊、邏輯存取路徑。
存取層的任務主要包括:

提供一次一個元組的查找、插入、刪除、修改的等基本操作。
提供元組查找所循的存取路徑以及對存取路徑的維護操作,如對索引記錄的增刪改查。若索引是採用B+樹的建立、查找、插入、刪除、修改等功能。
對記錄和存取路徑的封鎖、解鎖操作。
日誌文件的登記和存取操作。
其他輔助操作(掃描、合併/排序),其操作對象有關係、有序表、索引等。
1、 數據存取層的系統結構
在實際的關係數據庫管理系統中由多個功能子系統來完成數據存取層中的許多功能。數據存取層的系統結構如下:

這些子系統相互配合、緊密聯繫,構成了一個完整的數據存取系統。

2、數據存取層的功能子系統
記錄存取、事務管理子系統
數據存取層不涉及存儲分配、存儲結構及有關參數,只在數據的邏輯結構上操作,因而可以把各種物理實現形態隱蔽起來。
記錄存取子系統提供按某個屬性值直接取一個元組和順序取一個元組的存取原語。這種存取運算是按已選定的某個邏輯存取路徑進行的。
事務管理子系統提供定義和控制事務的操作。數據庫中事務是併發控制和恢復的單位,事務管理子系統提供的這些操作將登記進日誌文件中。
日誌登記子系統
日誌等級子系統和事務管理子系統緊密配合,完成關係數據庫管理系統對事務和數據庫的恢復任務,它把事務的開始、回滾、提交,對元組的插入、刪除、修改,以及對索引記錄的插入、刪除、修改等每一個操作作爲一個日誌記錄存入日誌文件中。當事務或系統軟硬件發生故障時利用日誌文件執行恢復。
寫日誌文件的有關操作:
寫日誌記錄(WIRTELOG)
讀日誌記錄(READLOG)
掃描日誌文件(SCANLOG)
撤銷尚未結束的事務(UNDO)
重做已經結束的事務(REDI)

控制信息管理模塊
該模塊利用專門的數據區(內存中)等級不同記錄類型以及不同存取路徑的說明信息(取自字典)和控制信息,這些信息是存取元組和管理事務的依據。該模塊和事務管理、記錄存取子系統一起保證事務的正常運行,提供對數據字典中說明信息的讀取、增加、刪除和修改操作。
排序/合併子系統
在語言處理層中,描述性語言表達的集合級操作被轉換成一系列對數據存取層所提供的存取原語的調用。爲了得到用戶鎖要求的有序輸出,爲了加速關係運算的中間步驟,常常需要對關係元組重新排序,這一工作由排序/合併子系統來完成。
排序操作的若干主要用途:
1)輸出有序結果
2)數據預處理
對於並、交、差、分組聚集、連接、取消重複值、屬於、不屬於等關係運算,當參與運算的關係無法全部放入內存時,先對其進行排序預處理,再在有序表上執行相應操作的做法是降低處理代價的常用手段。
3)支持動態建立索引結構
B+樹是數據庫中常用的索引結構。B+樹的葉頁索引記錄形式(碼值,TID),其中TID爲元組標識符。TID可用元組邏輯記錄號、主碼值或數據塊加位移等來表示。索引記錄在B+樹的葉頁上是順序存儲的,因此在初建B+樹索引時首先要對(碼值,TID)排序。
4)減少數據塊的存取次數
通過B+樹索引存取元組時,首先得到(碼值,DIT)集合,然後根據TID存取相應的元組。當TID是用數據塊號加位移來表示時,可首先對TID排序,使相同或臨近塊號的TID聚集在一起,然後按數據塊號順序存取物理數據塊,避免無序狀態下重複讀塊的情況,減少數據塊的存取次數。
排序操作是數據存取子系統和存取路徑維護子系統都要經常調用的操作,它對提高系統效率具有關鍵的作用。

存取路徑維護子系統
對數據庫執行插入、刪除、修改操作的同時,要對相應的存取路徑進行維護。
封鎖子系統
封鎖子系統完成併發控制功能。
1)在操作系統中也有併發控制問題,數據庫與操作系統的封鎖技術比較:

2)數據庫管理系統中封鎖子系統設計的難點不急在於技術複雜,而且其實現手段依賴於操作系統提供的環境。
二、數據庫管理系統的層次結構之緩衝區管理
數據存取層的下面是數據存儲層。該層主要是存儲管理,包括緩衝區管理、內外存交換、外存管理等。
數據存儲層向數據存取層提供的接口是由定長頁面組成的系統緩衝區。
系統緩衝區的設立的原因:

它把數據存儲層以上各系統成分和實際的外存設備隔離,外存設備的變更不會影響其他系統成分,使關係數據庫管理系統具有設備獨立性。
提供存取效率。
關係數據庫管理系統利用系統緩衝區緩存數據,當數據存取層需要讀取數據時,數據存儲子系統首先到系統緩衝區中查找。只有當緩衝區不存在該數據時才真正從外存讀入該數據所在的頁面。當數據存取層寫回一元組到數據庫中時,存儲子系統並不把它立即寫回外存,僅把該元組所在的緩衝區頁面作一標誌,表示可以釋放。只有當該用戶事務結束或緩衝區已滿需要調入新頁時,才按一定的淘汰策略把緩衝區中已有釋放標誌的頁面寫回外存。這樣可以減少內外存交換的次數,提高存取效率。
系統緩衝區可由內存或虛存組成。由於內存空間緊張,緩衝區的大小、緩衝區內存和虛存部分的比例要精心設計,針對不同應用和環境按一定的模型進行調整。既不能讓緩衝區佔據太大的內存空間,也不能因其空間太小而頻頻缺頁、調頁,造成“抖動”,影響效率。
數據庫緩衝區及上下接口:

緩衝區由控制信息和若干定長頁面組成。緩衝區管理模塊向上層提供的操作是緩衝區的讀(READBUF)、寫(WRITEBUF)。緩衝區內部的管理操作有查找頁、申請頁、淘汰頁。緩衝區管理調用操作系統的操作有讀(READBUF)、寫(WRITEBUF)。
緩衝區管理示意圖:

緩衝區管理中主要算法是淘汰算法和查找算法。操作系統中的淘汰算法:FIFO(先進先出算法)、LRU等。查找算法用來確定所請求的頁是否在內存,可採用順序掃描、折半查找、hash查找算法等。
————————————————
2019年阿里雲雙11活動熱門型號價格表 只要是新用戶,就可以直接購買,無需拼團,沒有任何門檻。(https://www.aliyun.com/1111/2019/group-buying-share?spm=a2c4e.11153940.0.0.59e85d407TbQ62&ptCode=4F3EAAA24826E82EB0B79C1A87FF53FE647C88CF896EF535&userCode=btodw2md&share_source=copy_link)(需要的同學可以考慮來一個確實便宜最低86元一年錯過真要再等一年)(學生黨學習建議入手)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章