1. 程式人生 > >《資料庫系統概念》15-可擴充套件動態雜湊

《資料庫系統概念》15-可擴充套件動態雜湊

靜態雜湊要求桶的數目始終固定,那麼在確定桶數目和選擇雜湊函式時,如果桶數目過小,隨著資料量增加,效能會降低;如果留一定餘量,又會帶來空間的浪費;或者定期重組雜湊索引結構,但這是一項開銷大且耗時的工作。為了應對這些問題,為此提出了幾種動態雜湊(dynamic hashing)技術,可擴充套件動態雜湊(extendable hashing)便是其一。

一、可擴充套件動態雜湊


A)用一個數組來儲存桶指標的目錄,陣列的位數為2的D次方,桶的容量為2的L次方,D和L分別稱為全域性位深度和區域性位深度。每次發生桶溢位時,溢位桶分裂,容量變為2的L+1次方,其它桶的容量保持不變,同時資料目錄的深度變為D+1。擴充套件容量時,只是調整了區域性的桶容量和目錄的容量,效能開銷比較小。
上圖中,目錄深度為2,目錄項有4個。然後開始插入資料d1和d2,假定h(d1)=13、h(d2)=20,由於13=1101,且全域性位深度為2,則根據後兩位01確定應插入b桶,b桶有空間,可直接插入。20=10100,應插入a桶,但a桶以及滿了,於是開始分裂,a桶的區域性位深度變為3,容量擴充套件為8,如果擴充套件後的區域性位深度超過了全域性位深度,則全域性位深度等於這個最大的區域性位深度,於是全域性位深度也隨之變為3。


如上圖所示,a桶分裂為a1、a2,目錄變為三位,對原來a桶中的元素進行重組,由於目錄位多了一位,要根據000、100來分別儲存到a1、a2桶。雖然目錄發生了翻倍,但未進行分裂的桶的區域性深度仍然為2,所以會有多個目錄項指向這些桶,比如001、101的後兩位都是01,都指向b桶。

B)對於查詢操作,根據當前的全域性位深度,通過目錄直接定位到桶地址,隨後在桶內部逐一查詢。

C)對於刪除操作,與查詢操作類似,刪除元素後,如果發現桶變為空,可與其兄弟桶進行合併,並使區域性位深度減一。如果所有的區域性位深度都小於全域性位深度,則目錄陣列也進行收縮。

二、靜態雜湊與動態雜湊對比
與靜態雜湊相比,動態雜湊的主要優勢在於其效能不會隨著記錄數增長而下降,另外還具有最小的空間佔用。缺點在於它會額外增加一次查詢定位,因為在查詢bucket本身前,需要先查詢目錄來定位bucket。
另一種動態雜湊技術-線性雜湊(linear hashing)可以避免額外的查詢定位,但可能這種方式需要更多的溢位桶,日後學習。

三、順序索引與雜湊的適用場景
每種索引結構都有其優缺點。如果是select * from a where b=c這樣的定值查詢,雜湊比順序索引跟適合,順序索引會隨著記錄數的增加而效能降低,雜湊則相對穩定。而對於where b>c and b<d這樣的範圍搜尋,則順序索引更適合,雜湊的隨機特性使得無法定位搜尋的bucket。所以雜湊只適合根據搜尋碼搜尋且不是範圍查詢的場合。

學習資料:Database System Concepts, by Abraham Silberschatz, Henry F.Korth, S.Sudarshan

https://www.cnblogs.com/kegeyang/archive/2012/04/05/2432608.html


相關推薦

資料庫系統概念15-擴充套件動態

靜態雜湊要求桶的數目始終固定,那麼在確定桶數目和選擇雜湊函式時,如果桶數目過小,隨著資料量增加,效能會降低;如果留一定餘量,又會帶來空間的浪費;或者定期重組雜湊索引結構,但這是一項開銷大且耗時的工作。為了應對這些問題,為此提出了幾種動態雜湊(dynamic hashing)

資料庫系統概念期中考知識點整理

資料庫系統概念期中考知識點整理 轉眼間學期就已經過半了,也迎來了幾個科目的期中考,資料庫首當其衝。前幾天忙著各種複習資料庫,手寫了一份挺詳細的複習提綱,記錄了比較經常考查的知識點 如有錯誤,歡迎指出 具體內容 資料、資

資料庫系統概念—學習筆記3

  第三章 SQL 1.資料定義語言:提供定義關係模式、刪除關係以及修改關係模式的命令。 2.資料操縱語言:提供從資料庫中査詢資訊,以及在資料庫中插人元組、刪除元組、修改元組的能力。 3.完整性( integrity ): SQL DDL 包括定義完整性約束的命令,儲存在資料庫中的

資料庫系統概念_中文第六版.pdf

【下載地址】 【編輯推薦】 資料庫領域的殿堂級作品 夯實資料庫理論基礎,增強資料庫技術內功的必備之選 對深入理解資料庫,深入研究資料庫,深入操作資料庫都具有極強的指導作用! 【內容簡介】 本書是資料庫系統方面的經典教材之一,其內容由淺入深,既包含資料庫系統基本概念,又反

資料庫系統概念】第二章:關係模型介紹

關係資料庫的結構 關係(relation) 關係資料庫由表(table)的集合構成。 在關係模型的術語中,關係就用來指代表。 元組(tuple) 指代表中的一行,表示一組值的序列(或列

資料庫系統概念》第三章:SQL

SQL資料定義 基本型別 char(n) 固定長度的字串,使用者指定長度n varchar(n) 可變長度的字串,使用者指定最大長度n int 整數型別(和機器相關的整數的有限子集) smallint 小整數型別(和機器相關的整數

資料庫系統概念》第八章:關係資料庫設計

函式依賴理論 Armstrong定理(Armstrong's axiom) 自反律(reflexivity rule):若為一屬性集且,則成立 增補律(augmentation rule):若成立且為一屬性集,則成立。 傳遞律(transitivity rule):

資料庫系統概念》第二章:關係模型介紹

  關係資料庫的結構 關係(relation) 關係資料庫由表(table)的集合構成。 在關係模型的術語中,關係就用來指代表。 元組(tuple) 指代表中的一行,表示一組值的序列(或列表)。 n個

資料庫系統概念》第一章:引言

資料庫(database):一個互相關聯的資料的集合。 資料庫管理系統(DataBase-Management System,DBMS):由資料庫和一組用以訪問這些資料的程式組成。 資料檢視 資料抽象 物理層(physical level)

資料庫系統概念(機械工業出版社,第七版)複習——第六章:資料庫設計和E-R模型

E-R模型 實體-聯絡模型:Entity-Relationship Model E-R圖要點 實體(Entity) 客觀存在並可相互區分的事物叫實體(唯一標識)。 實體集(Entity Set) 是具有相同型別及共享相同性質(屬性)的實體集合。如全體學生。組成實體集的各實

資料庫系統概念(第六版)習題答案——第二章關係模型介紹

第二章 關係模型介紹Employee(person-name,  street,  city) Works(person-name,  company-name,  salary) Company(company-name,  city) 圖2-14    習題2.1,

資料庫系統概念-IO代價

1. 巢狀迴圈連線(nested-loop join) 定義r為連線的外層關係(outer relation),s為連線的內層關係(inner relation) 定義br和bs分別代表包含關係r和s中元組的磁碟塊數。 最壞的情況下,共需要nr*bs+br次塊傳輸,磁碟搜尋次數為nr+b

資料庫系統概念ARIES恢復管理系統演算法

當系統崩潰後重啟時,恢復管理器將被啟用,並按以下三個階段進行處理。   分析(Analysis): 鑑別崩潰發生時,緩衝區中的髒頁和當時仍活躍的事務。 重做(Redo): 重做從日誌的適當起點(比如,被修改的最早髒頁對應日誌記錄) 開始的所有動作,恢復系統到崩潰時的DB

資料庫系統概念(機械工業出版社,第六版)複習——第八章:關係資料庫設計

第八章:關係資料庫設計 第一正規化(1NF) 如果某個域的元素被認為是不可再分的單元,那麼這個域就是原子的(atomic)。如果一個關係模式R的所有的屬性域都是原子的,我們稱關係模式R屬於第一正規化(

資料庫系統概念》學習筆記

書上的例子以及練習題都是用 Mysql 實現的,作業系統使用的 macOS。在使用 Mysql 遇到問題時,推薦檢視官方文件 Mysql Reference Manual。 第一章 引言 第一章就是綜述整本書要講的知識點,讓讀者對資料庫系統有個大體的瞭解。我

資料庫系統概念】第6章 形式化關係查詢語言 知識總結

《資料庫系統概念》第6章知識點總結 形式化關係查詢語言 關係代數 關係代數基本運算:選擇、投影、並、集合差、笛卡爾積、更名 基本運算 選擇運算 選出滿足給定謂詞的元組,用sigma(σ)來表示,將謂詞寫作σ的下表 例如:屬於物理系的元組可以這樣寫   通常,我們允許在選擇

資料庫系統概念(第六版)課後習題答案-第三章SQL(實踐習題)

3.1 使用大學模式,用SQL寫出如下查詢。(建議在一個數據庫上實際執行這些查詢,使用我們在本書的Web網站db-book.com上提供的樣本資料,上述網站還提供瞭如何建立一個數據庫和載入樣本資料的說明。)Classroom(building, room_number, ca

資料庫系統概念(機械工業出版社,第六版)複習——第十章:資料儲存和資料存取

第十章 資料儲存和資料存取 檔案組織 每個檔案分成定長的儲存單元,稱作塊(block),塊是儲存分配和資料傳輸的基本單元。 變長記錄 分槽頁結構: 分槽的頁結構一般用於在塊中組織記錄。 分槽頁頁頭,在

資料庫系統概念第六版》讀書筆記

1.任何沒有出現在group by句中的屬性如果出現在select子句中的話,它只能出現在聚集函式的內部(sum,avg,count,max,min)。否則,這樣的查詢是錯誤的。例:select d

資料庫系統概念(機械工業出版社,第六版)複習——第十二章:事務管理

第十二章 事務管理 事務定義 事務是訪問並可能更新各種資料項的一個程式執行單元。 這些操作要麼都做,要麼都不做,是一個不可分割的工作單位。例如銀行轉賬 SQL中事務的定義        Commit