1. 程式人生 > >《數據庫系統概念》16-位圖索引和查詢處理

《數據庫系統概念》16-位圖索引和查詢處理

blog 偏移 ali data 設計 log 語法分析 方便 ans

一、位圖索引
位圖索引(bitmap indices)是一種專為多個鍵的簡單查詢而設計的。應用位圖索引的前提是記錄必須被按順序編號,一般從0開始。給出編號n,必須能夠很容易的找到對應的記錄,如果記錄被存放在連續的塊,可以將編號n轉換成塊編號+塊內偏移的表示以快速定位記錄位置。

位圖索引的結構

技術分享圖片


位圖索引用一個位來對應一條記錄,這便是記錄需要被編號的原因。instructor_info表如上圖,性別的值有男、女兩種,收入等級則劃分為5級,既有5種值。在給性別屬性建立位圖索引時,就會分別為male和female建立,對於male位圖來說,如果一條記錄的性別為male,則位圖上對應的位會置1,female、收入等級位圖也采用相同的做法。
位圖索引的優勢體現在根據多個鍵的查詢的時候,比如查詢where gender=’f’ and income_level=’L2’,只需將f的bitmap和L2的bitmap取交集即可。
此外,在進行數據分析時經常需要統計符合某些條件的記錄的數量,使用bitmap也可以很方便地實現,只需統計交集中值為1的位的數目。
刪除記錄的時候會使數據序列產生間隙,但逐個移動數據消除間隙開銷很大,所以引入一個新的存在位圖(existence bitmap),在間隙對應的位置1。新增的數據將被追加到尾部,這樣不會影響已有記錄的順序。

二、查詢處理

在從數據庫提取數據的過程中,查詢處理要做的操作有:語法分析與翻譯、優化、評估與執行。

查詢代價的度量
使用傳送磁盤塊數(number of block transfers)和搜索磁盤次數(number of disk seeks)來衡量查詢的代價。假設磁盤子系統傳輸一個塊的數據需要tT秒,搜索數據需要ts秒,則傳送b個塊並進行S次磁盤搜索的操作將消耗b*tT+s*ts秒。現在磁盤的典型數值為tT =0.1毫秒,ts =4毫秒,假定磁盤塊的大小是4KB,傳輸率為40MB/秒。
通過將讀操作與寫操作區分開可以做出更精細地估算,寫操作花費的時間約為讀操作的兩倍,因為寫完數據後,磁盤系統會再次讀取該扇區以驗證寫入是否成功。

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

《數據庫系統概念》16-位圖索引和查詢處理