資料庫學習筆記 第九章 儲存資料 磁碟和檔案

2022-05-30 18:36:10 字數 2567 閱讀 2049

第九章

資料以磁碟塊為單位儲存在磁碟上。塊分布於一張或多張碟片的同心環形磁軌上。磁軌可以在碟片的單面或雙面上錄製。

同一直徑的所有磁軌的集合稱為柱面。

磁碟塊的大小在磁碟初始化時可以被設定成扇區大小的倍數。

每乙個記錄的表面都有乙個磁碟頭陣列。讀寫一塊時,磁頭必須定位在塊頭位置。

不能並行讀寫的主要原因是很難保證所有磁頭被精確定位在相應的磁軌上。

磁碟控制器是磁碟驅動器與計算機的介面。

當資料被寫到扇區時,需要計算校驗和並儲存在扇區上,當扇區上的資料被獨處時,需要再次校驗和。

尋道時間是用於移動磁頭到達所需塊所在的磁軌的時間,旋轉延遲是所需塊旋轉到磁頭下的等待時間,它的平均時間是旋轉半圈需要的時間,它通常小於尋道時間。傳輸時間是當磁頭定位後實際讀或寫磁碟塊的時間,,即磁碟旋轉經過資料塊的時間。

rpm =revolutions per minute 每分鐘多少轉

磁碟和主存之間資料傳輸的單位是塊,如果只需要塊上的某一項,也需要傳輸整個塊。

磁碟陣列是把幾個磁碟組織在一起的一種形式,以提高效能和改善儲存系統的可靠性。

冗餘用於改善可靠性,即可靠性是通過增加冗餘資訊而不是通過儲存資料的簡單拷貝來改善的。

資料劃分用於提高效能,它把資料分布在多個磁碟上。

實現資料劃分和冗餘相結合的磁碟陣列稱為獨立磁碟冗餘陣列,簡稱raid

在資料劃分中,資料被分成相等大小的段,並分布到多個磁碟上。段的大小被稱為劃分單位。資料段通常使用迴圈演算法分布,如果磁碟陣列有d個磁碟,那麼資料段i被寫在i mod d磁碟上。

對於劃分單位為1位元位的磁碟陣列來說,每個單位時間裡陣列能處理請求的數量以及每個單個請求的平均響應時間與單個磁碟相似。

多數磁碟陣列都儲存校驗資訊,在校驗模式中,額外乙個校驗磁碟用於存放可以恢復陣列中任意乙個磁碟故障的校驗資訊。

在raid系統中,磁碟陣列被劃分為不同的可靠組,可靠組由一組資料盤和校驗盤組成。

磁碟空間管理支援作為資料單元的頁的概念,並且提供分配和**頁及讀/寫頁的命令:

磁碟空間管理器隱藏了底層硬體(和作業系統)的希捷,並允許高層軟體把資料堪稱是頁的集合。

跟蹤磁碟利用情況的乙個方法是維護乙個空閒塊的列表,,當塊被**時,把它們放進空閒列表,以備將來使用。第二個方法是維護乙個位圖,其中的每一位對應乙個磁碟塊。

資料庫磁碟空間管理器可以建立在os檔案之上。

用於確定哪些頁被替換掉的策略稱為替換策略replacement policy。

緩衝區管理器是負責在必要時把頁面從磁碟取到主存的軟體層,它通過把緩衝區劃分為頁集來管理可獲得的主存,這些頁集通常稱為緩衝池。緩衝池中的主存頁稱為幀,即存放頁的槽。

除了緩衝池本身,緩衝區管理器還維護一些薄記資訊和描述幀的兩個變數: pin_count和dirty。pin_count記錄存放在某個幀中的當前頁已經被請求但還未釋放的次數,即該頁的當前使用者數。布林變數ditry表示頁從磁碟讀入緩衝池後是否已經被修改。

開始時,每個幀的pin_count為0,dirty為假,當頁被請求時,緩衝區做如下工作:

(1)檢查緩衝池是否包含被請求的頁,如果緩衝池中有該頁,則將該頁的pin_count值增加,如果緩衝池中沒有該頁,緩衝區管理器將按如下步驟把缺頁讀入緩衝池中:

(a)     根據替換策略選擇替換幀,並增加它的pin_count。

(b)     如果替換幀的dirty為真,把該幀存放的頁寫回磁碟。

(c)     把請求的頁讀入替換幀。

(2)把替換幀的位址返回給申請者。

緩衝區替換策略:

最近最少使用策略lru(least recently used),它通過在緩衝區中管理乙個指向pin-count為0的幀的指標佇列來實現。當乙個幀成為替換候選(pin-count為0)時,它被加入佇列尾,替換時總是選擇佇列頭的幀。

時鐘:lru的變體,使用current變數以環形順序選擇替換幀,為了近似lru行為,每乙個幀也有乙個相關的referenced位,它在頁的pin-count變為0時開始啟動。

替換時選擇current指向的幀,如果幀沒有選擇被替換,current將增加,而考慮下乙個幀。如果current指向的幀的pin-count大於0,則它不能成為替換候選鍵,current增加計數。如果current指向的幀的referenced位已啟動,時鐘演算法將關閉它並且增加current,這種方法使得乙個最近引用頁將不可能被替代。如果current幀的pin-count為0,並且 它的referenced位關閉,則其中的頁將被替換。

9.5記錄檔案

頁的鍊錶:一種方法是把堆檔案維護為頁的雙向鍊錶。dbms通過乙個存於磁碟已知位置由《堆檔名, 首頁位址》對構成的表來記錄檔案第一頁的位置。檔案的第一頁稱為首頁。

缺點:當記錄是變長記錄時,檔案中的所有頁事實上都將存在於空閒空間鍊錶上,因為每一頁都可能至少有一些空閒位元組。

頁目錄(page directory):構建頁鍊錶的另一種方法是

目錄本身是一組頁的集合,乙個目錄頁可以有多個目錄項,每乙個目錄項都指向堆檔案的一頁。

乙個堆檔案允許我們去遍歷所有的記錄:1.通過具體的rid,  2 通過順序地瀏覽所有的記錄

頁格式:定長記錄  變長記錄

第九章 資料庫

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 乙個使用者要想連線到資料庫上,就必...

資料庫第九章總結!

第九章 關係查詢處理和查詢優化 1.查詢處理的步驟 1 查詢分析 對語句進行掃瞄 詞法分析 語法分析。2 查詢檢查 對合法查詢語句進行語義分析,根據資料字典中有關模式的定義檢查語句中的資料庫物件比如關係名 屬性名 是否存在和有效。這時的完整性檢查是初步的 靜態的檢查 3 查詢優化 分為代數優化和物理...