熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

Oracle 的位圖索引

2013-11-13 22:10:48  來源: Oracle 

  Oracle的索引主要包含兩類BTree和位圖索引默認情況下大多使用Btree索引該索引就是通常所見 唯一索引聚簇索引等等Btree用在OLTP加快查詢速度位圖索引是Oracle的比較引人注目的地方其主要用在OLAP(聯機數據分析)方面也就是數據倉庫方面用到目的是在加快查詢速度是節省存儲空間通常情況下索引都要耗費比較大的存儲空間位圖采用了壓縮技術實現磁盤空間縮減Btree用在高基數(即列的數據相異度大)位圖用在低基數列位圖索引的基本原理是在索引中使用位圖而不是列值通常在事實表和維表的鍵之間有很低的集的勢(cardinality)使用位圖索引存儲更為有效與B*Tree索引比較起來只需要更少的存儲空間這樣每次讀取可以讀到更多的記錄而且與B*Tree索引相比位圖索引將比較連接和聚集都變成了位算術運算大大減少了運行時間從而得到性能上的極大的提升
  
  在Oracle中如何合理的使用位圖索引?以下的幾個事項應該考慮
  
  * 如果要使用位圖索引初始化參數STAR_TRANSFORMATION_ENABLED應該設置為TRUE
  
  *  優化模式應該是CBO對於數據倉庫的環境中總是應該考慮使用CBO(COSTBASEDOPTIMIZER)
  
  *  位圖索引應該建立在每一個事實表的外鍵列上(這只是一個一般的規則)
  
  此外對於數據表中的cardinality如何客觀的確定也是一個問題一萬條數據中只包含個值的集和算是低的了那麼一億條記錄中包含萬條記錄算不算低的呢?對於這樣的情況建議幾行一下數據的模擬測試一般來說在數據倉庫環境中位圖索引的性能要好於B*Tree索引還要注意位圖索引不是為OLTP數據庫設計的不應該在OLTP數據庫中大量的使用它尤其是對那些有更新操作的表
  
  Oracle的索引主要包含兩類BTree和位圖索引默認情況下大多使用Btree索引該索引就是通常所見 唯一索引聚簇索引等等Btree用在OLTP加快查詢速度位圖索引是Oracle的比較引人注目的地方其主要用在OLAP(聯機數據分析)方面也就是數據倉庫方面用到目的是在加快查詢速度是節省存儲空間通常情況下索引都要耗費比較大的存儲空間位圖采用了壓縮技術實現磁盤空間縮減Btree用在高基數(即列的數據相異度大)位圖用在低基數列位圖索引的基本原理是在索引中使用位圖而不是列值通常在事實表和維表的鍵之間有很低的集的勢(cardinality)使用位圖索引存儲更為有效與B*Tree索引比較起來只需要更少的存儲空間這樣每次讀取可以讀到更多的記錄而且與B*Tree索引相比位圖索引將比較連接和聚集都變成了位算術運算大大減少了運行時間從而得到性能上的極大的提升
  
  在Oracle中如何合理的使用位圖索引?以下的幾個事項應該考慮
  
  * 如果要使用位圖索引初始化參數STAR_TRANSFORMATION_ENABLED應該設置為TRUE
  
  *  優化模式應該是CBO對於數據倉庫的環境中總是應該考慮使用CBO(COSTBASEDOPTIMIZER)
  
  *  位圖索引應該建立在每一個事實表的外鍵列上(這只是一個一般的規則)
  
  此外對於數據表中的cardinality如何客觀的確定也是一個問題一萬條數據中只包含個值的集和算是低的了那麼一億條記錄中包含萬條記錄算不算低的呢?對於這樣的情況建議幾行一下數據的模擬測試一般來說在數據倉庫環境中位圖索引的性能要好於B*Tree索引還要注意位圖索引不是為OLTP數據庫設計的不應該在OLTP數據庫中大量的使用它尤其是對那些有更新操作的表
  
  Oracle的索引主要包含兩類BTree和位圖索引默認情況下大多使用Btree索引該索引就是通常所見 唯一索引聚簇索引等等Btree用在OLTP加快查詢速度位圖索引是Oracle的比較引人注目的地方其主要用在OLAP(聯機數據分析)方面也就是數據倉庫方面用到目的是在加快查詢速度是節省存儲空間通常情況下索引都要耗費比較大的存儲空間位圖采用了壓縮技術實現磁盤空間縮減Btree用在高基數(即列的數據相異度大)位圖用在低基數列位圖索引的基本原理是在索引中使用位圖而不是列值通常在事實表和維表的鍵之間有很低的集的勢(cardinality)使用位圖索引存儲更為有效與B*Tree索引比較起來只需要更少的存儲空間這樣每次讀取可以讀到更多的記錄而且與B*Tree索引相比位圖索引將比較連接和聚集都變成了位算術運算大大減少了運行時間從而得到性能上的極大的提升
  
  在Oracle中如何合理的使用位圖索引?以下的幾個事項應該考慮
  
  * 如果要使用位圖索引初始化參數STAR_TRANSFORMATION_ENABLED應該設置為TRUE
  
  *  優化模式應該是CBO對於數據倉庫的環境中總是應該考慮使用CBO(COSTBASEDOPTIMIZER)
  
  *  位圖索引應該建立在每一個事實表的外鍵列上(這只是一個一般的規則)
  
  此外對於數據表中的cardinality如何客觀的確定也是一個問題一萬條數據中只包含個值的集和算是低的了那麼一億條記錄中包含萬條記錄算不算低的呢?對於這樣的情況建議幾行一下數據的模擬測試一般來說在數據倉庫環境中位圖索引的性能要好於B*Tree索引還要注意位圖索引不是為OLTP數據庫設計的不應該在OLTP數據庫中大量的使用它尤其是對那些有更新操作的表
  
  Oracle的索引主要包含兩類BTree和位圖索引默認情況下大多使用Btree索引該索引就是通常所見 唯一索引聚簇索引等等Btree用在OLTP加快查詢速度位圖索引是Oracle的比較引人注目的地方其主要用在OLAP(聯機數據分析)方面也就是數據倉庫方面用到目的是在加快查詢速度是節省存儲空間通常情況下索引都要耗費比較大的存儲空間位圖采用了壓縮技術實現磁盤空間縮減Btree用在高基數(即列的數據相異度大)位圖用在低基數列位圖索引的基本原理是在索引中使用位圖而不是列值通常在事實表和維表的鍵之間有很低的集的勢(cardinality)使用位圖索引存儲更為有效與B*Tree索引比較起來只需要更少的存儲空間這樣每次讀取可以讀到更多的記錄而且與B*Tree索引相比位圖索引將比較連接和聚集都變成了位算術運算大大減少了運行時間從而得到性能上的極大的提升
  
  在Oracle中如何合理的使用位圖索引?以下的幾個事項應該考慮
  
  * 如果要使用位圖索引初始化參數STAR_TRANSFORMATION_ENABLED應該設置為TRUE
  
  *  優化模式應該是CBO對於數據倉庫的環境中總是應該考慮使用CBO(COSTBASEDOPTIMIZER)
  
  *  位圖索引應該建立在每一個事實表的外鍵列上(這只是一個一般的規則)
  
  此外對於數據表中的cardinality如何客觀的確定也是一個問題一萬條數據中只包含個值的集和算是低的了那麼一億條記錄中包含萬條記錄算不算低的呢?對於這樣的情況建議幾行一下數據的模擬測試一般來說在數據倉庫環境中位圖索引的性能要好於B*Tree索引還要注意位圖索引不是為OLTP數據庫設計的不應該在OLTP數據庫中大量的使用它尤其是對那些有更新操作的表
From:http://tw.wingwit.com/Article/program/Oracle/201311/18396.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.