程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SyBase數據庫 >> SyBase綜合文章 >> 高性能海量級數據倉庫引擎Sybase IQ概述2

高性能海量級數據倉庫引擎Sybase IQ概述2

編輯:SyBase綜合文章

Sybase IQ服務器的核心由於采用了正在申請專利的Bit-Wise索引技術,它在處理復雜的即席查詢時,能比傳統的B-Tree索引能提高響應速度10~100倍。

對B-Tree及Bit-Map索引的簡要回顧

1.傳統的B-Tree(平衡樹)索引是通過跟蹤一個選擇的數據字段的值和直接指向包含該數據項的數據頁的方式來提供快速查找數據記錄。

傳統的B-Tree 樹索引

若為一個特定的客戶查找信息記錄就只有快速讀取索引,然後直接定位到包含該客戶信息的數據頁中。索引方式通過直接指向相關信息來消除高代價的表掃描。

B-Tree非常適合於查找並取回少量的行。但對典型的數據倉庫的復雜交互式查詢應用B -Tree有三個缺點:

首先,B-Tree只在索引是高度可選擇(Highly Selective)又稱之為高基數(Cardinality )的時候才有價值,對一些唯一值極少的(低基數)數據字段就幾乎毫無價值。

B-Tree索引第二個限制是在數據倉庫中構造和維護索引的代價。

由於B-Tree索引包含實際數據和其他信息(如指針等),因而使得索引需占用一定的空間和時間。如果構造所有相關的索引,數據倉庫就會占據2~4倍原始數據空間。當成批插入刪除時,索引就非常敏感,有可

能失去平衡並降低性能。通常說來,10%~15%的數據修改會導致重建索引。

最後,B-Tree索引設計用於簡單查詢及已知公共存取路徑的環境下才有優點,而在數據倉庫應用中,通常是復雜的查詢,並經常帶有分組及聚合條件。此時,B-Tree索引往往是無能為力。

2.Bit-Map(位圖)索引和使用B-Tree相比,位圖為每個記錄的名字段用給定真或假("1"或"0")的方式表示。

傳統的位圖索引突破了B-Tree索引的一些限制。位圖索引可以非常有效地對低基數數據進行索引,但位圖式索引卻不適用於高基數數據,在聚集數據、完成關系聯結和取回原始數據值等方面的效率不高。

Bit-Wise的索引技術特點

1.Sybase IQ在存儲數據的方式上與傳統的RDBMS完全不同,它不是以"記錄行"而是按"列"為單位來存儲數據。即所謂的"對數據進行垂直分割",它在Bit-Map索引基礎上擴充存放了該字段中的不同取值,

一般的DSS查詢往往僅涉及大量數據記錄中的少數列,因而不需訪問原始數據就能快速獲得查詢結果。顯然,利用這些不同取值也就能快速地進行數據聚集、分組、求最大值、最小值及平均值等。它彌補了位圖式索引不適用於高基數數據的缺點。

2.由於列數據比行數據更易進行壓縮,因而Sybase IQ以壓縮方式存放原始數據時可節省50%的磁盤空間,在獲取查詢結果數據時減少了I/O次數,響應速度自然加快。

3.Sybase IQ采用操作系統級的並行處理機制,因而像分類、Bit-Map操作及I/O操作都可由操作系統獨立地進行調度以消除瓶頸,進而在數據加載時其能充分利用SMP環境中多CPU的資源潛力。

Bit-Wise"數據驅動的"索引機制在Sybase IQ中對每個字段所建索引的類型和個數主要是取決於其數據的特征和經常被使用的情況而不是針對某組特定的查詢(後者被稱為"查詢驅動的"索引機制)。Bit-

Wise索引是"數據驅動的",因而無需DBA為各種查詢分別考慮優化策略。

Sybase IQ支持的主要索引類型為:

・LowFast-LF(低基數)

・HighGroup-HG(高基數)

・HighNonGroup-HNG(高基數)

・FastProjIEctinFP

建立Bit-Wise索引的一般原則:

(1)在每個列上都建FP索引;

(2)在唯一值<1000的字段上建立LF索引;

(3)在參加連接的字段上建HG或LF索引;

(4)唯一值>1000且用在GROUP BY,SELCT DISITICT,COUNT DISITICT中的字段上建立HG索引;

(5)此外的其它列若出現在where條件中或聚集運算中,則建立HNG索引。

Sybase IQ可利用預連接技術來提高即席查詢速度

Sybase IQ支持兩類連接處理:一類是即席連接(在查詢時處理);另一類是預連接(在加載時處理)。大多數應用是二者的結合。即席連接適用於多對多的聯系,被連接的表之間的尺寸差別超過10倍。

預連接適用於一對多的聯系,被連接的表之間的尺寸差別不大於10倍,如:等值或左、右外連接。但預連接將導致增大存儲量並降低加載速度。

Sybase IQ能對已建立了HG或LF索引的列,再利用"Joined Indexset"完成預連接處理。它通常能使查詢速度提高10倍以上。

設置Sybase IQ的基本步驟:

在安裝Sybase IQ產品之後:

1.建立與Sybase IQ Indexspace相關的SQL Server基礎數據庫,Indexspace是SybaseIQ 用於存儲索引結構和部分數據的原始設備(rawdevices)或系統文件;

2.建立同基礎數據庫同名的Sybase IQ Indexspace,最大為2GB,I/O塊同壓縮比有關,調節范圍512B到32KB;

3.在基礎數據庫上建表;

4.運行Sybase IQ的存儲過程,估算所需空間;

5.為表中的某列或所有列建立Sybase IQ Indexsets,Indexsets是Sybase IQ存儲表中某列索引空間的,它存儲於Indexspace中;

6.定義不同Sybase IQ的索引類型,(每列都建立一個FP索引然後酌情建立別種索引);

7.往Sybase IQ Indexset中加入新數據,從相關的數據庫中插入數據到Sybase IQ Inde xes或利用ASCII文件加載;

8.建立供預連接用的Joined Indexset;

9.往Joined Indexset中加入新數據。

現在已可通過Isql或其他前端工具查詢Sybase IQ數據了。

測試比較

經實際的測試後,Sybase IQ的效果良好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved