王志鵬 孫萌
摘 要:數(shù)據(jù)倉庫中存貯著大量的歷史數(shù)據(jù),主要供企業(yè)決策分析之用,所涉及的數(shù)據(jù)操作主要是數(shù)據(jù)查詢。因此,提升數(shù)據(jù)倉庫的查詢效率,優(yōu)化查詢方法是提升數(shù)據(jù)倉庫應用的關鍵問題之一。本文主要介紹了數(shù)據(jù)倉庫的查詢性能問題,介紹目前主流的查詢優(yōu)化方法,并重點介紹了索引技術(shù)和分區(qū)優(yōu)化方法。
關鍵詞:數(shù)據(jù)倉庫;查詢優(yōu)化;索引;分區(qū)優(yōu)化
1 引言
數(shù)據(jù)倉庫是為企業(yè)所有級別的決策制定過程提供支持的所有類型數(shù)據(jù)的戰(zhàn)略集合。數(shù)據(jù)倉庫是由單個數(shù)據(jù)存儲,出于分析性報告和決策支持的目的而創(chuàng)建。作為商業(yè)智能市場的三大支撐技術(shù)之一,數(shù)據(jù)倉庫為企業(yè)提供需要業(yè)務智能來指導業(yè)務流程改進和監(jiān)視時間、成本、質(zhì)量和控制。數(shù)據(jù)倉庫中存貯著大量的歷史數(shù)據(jù),主要供企業(yè)決策分析之用,所涉及的數(shù)據(jù)操作主要是數(shù)據(jù)查詢。因此,提升數(shù)據(jù)倉庫的查詢效率,優(yōu)化查詢方法是提升數(shù)據(jù)倉庫應用的關鍵問題之一。本文主要介紹了數(shù)據(jù)倉庫的查詢性能問題,介紹目前主流的查詢優(yōu)化方法,并重點介紹了索引和分區(qū)優(yōu)化方法。
查詢性能對于數(shù)據(jù)倉庫來說,是最重要的性能指標。無論是在生產(chǎn)系統(tǒng),還是在POC(Proof Of Concept)性能測試來說,優(yōu)秀的查詢性能都能為數(shù)據(jù)倉庫的應用帶來高效的工作效率。OLAP涉及到大面積的數(shù)據(jù)查詢,如何滿足OLAP的快速響應,是數(shù)據(jù)倉庫性能優(yōu)化的核心。
針對數(shù)據(jù)倉庫查詢的復雜性特點,目前主要的查詢優(yōu)化方法主要包括物化視圖、近似查詢、索引技術(shù)、分區(qū)優(yōu)化等。本文重點介紹索引技術(shù)和分區(qū)優(yōu)化。
2 索引技術(shù)
目前數(shù)據(jù)倉庫中常用的索引結(jié)構(gòu)有三種,β-樹索引、R-樹索引和位圖索引。
2.1 β-樹索引
β-樹是一種動態(tài)調(diào)節(jié)的平衡樹,它引入了一種效率很高的外查找機制,比較適合于字段值分散且重復值少的字段。一個β-樹索引包含一個由高層結(jié)點和相繼低層結(jié)點組成的層次結(jié)構(gòu)。在β-樹索引中有兩類結(jié)點:分支結(jié)點,簡單地指向相應的低層結(jié)點;葉子結(jié)點,存放β-樹方法的實際內(nèi)容。
β-樹結(jié)構(gòu)的特點是簡潔性、易維護性及支持具有高可選擇性列值的高速檢索。這種方法適合于對索引列值等值查找和范圍查找的查詢。
2.2 位圖索引
位圖索引與β-樹索引相反,用于索引列的可能取值比較少,即低基數(shù)的情況。在位圖索引中,不是以行標識為指針說明各條記錄,而是應用“位”的概念直接確定索引列的值。“位”是位圖索引的核心,每一位與索引列可能的取值之一相對應。 在索引列的可能取值數(shù)目小于32時,采用位圖索引可以節(jié)省存儲空間;索引列的可能取值數(shù)目大于32時,位圖索引節(jié)省存儲空間的優(yōu)勢就不存在了。
2.3 R-樹索引
R-樹索引支持多維數(shù)據(jù)建立索引,是一種面向多維空間對象的索引結(jié)構(gòu),R-樹內(nèi)部結(jié)點中的鍵值則是多維空間中的一個區(qū)域,因此不僅要存儲行標識信息,同時要存儲被索引對象的邊界信息。因為R-樹索引是多維的,所以常常采用這種方法為OLAP數(shù)據(jù)建立索引。
基于R-樹來存儲組織數(shù)據(jù)倉庫中的聚集數(shù)據(jù),即實物化視圖,有效地支持各種OLAP查詢。根據(jù)所有的維建立的R-樹索引可以較好地滿足多維空間對象查詢需要,而利用它為多維數(shù)據(jù)建立索引仍有較大的不足。
2.4 索引優(yōu)化
不論是數(shù)據(jù)庫還是數(shù)據(jù)倉庫, 索引建立的好壞直接影響訪問效率。
β-樹只在索引是高基數(shù)(基數(shù)是一個表列中不同值的個數(shù)與整個表中的行數(shù)的比值)的時候才有價值,而在數(shù)據(jù)倉庫中構(gòu)造和維護的代價高。因此β-樹索引對于簡單查詢比較有效,而在數(shù)據(jù)倉庫的復雜查詢中, 往往是無能為力的。
在數(shù)據(jù)倉庫中采用位圖索引技術(shù)可以使查詢處理和索引存取的效率提高許多倍。在數(shù)據(jù)倉庫環(huán)境中,位圖索引在建立和維護位圖索引時間和空間代價方面都優(yōu)于β-樹索引,同時 位圖索引可以彼此一起工作達到減少搜索空間的目的。但隨著基數(shù)的增加, 位圖索引仍然存在不可克服的缺點。因此如何高效地實現(xiàn)建立數(shù)據(jù)倉庫索引,提高查詢性能,需要進一步研究和探討的問題。
3 分區(qū)優(yōu)化
目前數(shù)據(jù)倉庫分區(qū)優(yōu)化的方法得到廣泛應用。關系型數(shù)據(jù)倉庫和分析服務多維數(shù)據(jù)集都支持數(shù)據(jù)分區(qū)。分區(qū)是通過創(chuàng)建單獨的物理表(例如為每個月的數(shù)據(jù)創(chuàng)建一個表)并且定義一個成員表的聯(lián)合視圖來實現(xiàn)的。在數(shù)據(jù)倉庫中,事實表,索引表,維度表分處于三個不同的表空間當中,便于并發(fā)操作。分區(qū)的優(yōu)點是可以大大縮短查詢時間,減少加載時間,改善數(shù)據(jù)庫的可維護性,同時有效解決從活動數(shù)據(jù)庫中刪除舊數(shù)據(jù)時出現(xiàn)的數(shù)據(jù)修剪問題。
數(shù)據(jù)倉庫分區(qū)存在一些限制條件:表或索引的所有分區(qū)必須具備相同的邏輯結(jié)構(gòu),但每個分區(qū)的物理屬性可以不同,每個分區(qū)對象的所有分區(qū)必須存儲在數(shù)據(jù)庫塊容量相同的表空間中,但一個表的不同分區(qū)索引可以防止不同塊大小的表空間中。
[參考文獻]
[1]趙志升,李靜,葉云龍.數(shù)據(jù)倉庫模型設計中的索引策略研究[J].電腦開發(fā)與應用, 2010年01期.
[2]黃金釵,楊科華,陳楠楠.數(shù)據(jù)倉庫索引啟發(fā)式查詢優(yōu)化方法[J].計算機工程與應用,2010年03期.
[3]壽挺,肖善鐘,陸翔.一種采用實時分區(qū)實現(xiàn)實時數(shù)據(jù)倉庫的方法[J].電力信息化, 2009年04期.
[4]徐東海.數(shù)據(jù)庫中分區(qū)索引技術(shù)研究[D].長沙理工大學,2012.