合理配置TimesTen記憶體資料庫Hash索引的PAGES引數
TimesTen記憶體資料庫支援雜湊、範圍和點陣圖三種型別的索引,其中雜湊索引在等值查詢中有著其他索引不能比的高效的優勢,通常用於匹配單行或多行記錄查詢。
-
雜湊索引的建立語法:
-
CREATE [UNIQUE] HASH INDEX [Owner.]IndexName ON [Owner.]TableName ({ColumnName [ASC | DESC]} [,... ] ) [ PAGES = RowPages | CURRENT ]
在建立表時指定主鍵時都會使用索引來增強對資料的掃描,預設索引範圍索引來增強主鍵查詢,然而我們也可以使用唯一雜湊來指定增強主鍵查詢;如我我們在建立主鍵時使用雜湊索引來增強主鍵查詢,那麼當應用在執行主鍵範圍掃描時,雜湊索引將會被忽略;雜湊索引在等值查詢單行或多行記錄中有著範圍索引不能比的高效的優勢。
雜湊索引在建立時,會根據雜湊索引建立時指定的PAGES引數自動分配固定數量的Buckets來儲存表的索引資訊,如果Buckets過少會降低索引雜湊度,索引雜湊度過低無論是在索引掃描、索引重建或回滾期間,均容易帶來雜湊衝突,從而帶來效能影響;PAGES引數可以透過ALTER TABLE或者先DROP TABLE後CREATETABLE的方式修改。
雜湊索引的PAGES引數在雜湊索引中如此重要,我們必須設定正確的PAGES引數來保證索引的高效使用;但是,由於應用及業務的增長,我們如何判斷我們的PAGES引數配置是否正確呢?首先,我們需要知道,TimesTen在對資料的儲存與Oracle不同,不是按照塊來儲存,而是按照頁的方式進行儲存,按照每個頁256行記錄的方式對資料進行儲存,所以PAGES=count/256;而Bucket的計算方式為Buckets=(PAGES*256)/20。
但是,我們在實際運維中,經常會在tterrors中出現waiting for latch"Lock Hash Bucket[3918]"或者waiting for latch "Index OWNER.TABLENAME"的latch等待資訊;其實還是由於PAGES引數設定不合理引起的,主要是對count的計算不準確造成的,由於系統執行一段時間後,達標一般都會存在一定的碎片(空行),所以count=NUM_USED_ROWS+NUM_FREE_ROWS,詳細可以參考我們博文:
《 如何評估和計算TimesTen記憶體資料庫表的大小》 http://blog.itpub.net/24930246/viewspace-1168811/
那麼PAGES引數是不是越大越好呢?當然不是了,PAGES引數過大,會導致Buckets過大,會佔用更多的記憶體儲存空間,記憶體對於記憶體資料庫來說是一個非常重要的指標,記憶體過大直接影響記憶體資料庫的裝載/解除安裝、恢復等消耗的時長。
---------------End-------------------------
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24930246/viewspace-1416271/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【記憶體資料庫】TimesTen記憶體資料庫
- TimesTen記憶體庫monitor表引數說明記憶體
- 記憶體資料庫TimesTen介紹記憶體資料庫
- TimesTen記憶體庫sys.odbc.ini引數說明記憶體
- Oralce記憶體資料庫TimesTen簡介記憶體資料庫
- JVM記憶體引數配置JVM記憶體
- 採用java連結timesten記憶體資料庫Java記憶體資料庫
- 合理配置SQL Server的最大記憶體SQLServer記憶體
- JVM記憶體溢位及合理配置JVM記憶體溢位
- 從記憶體洩露、記憶體溢位和堆外記憶體,JVM優化引數配置引數記憶體洩露記憶體溢位JVM優化
- 【大頁記憶體】Oracle資料庫配置大頁記憶體記憶體Oracle資料庫
- jvm的記憶體引數配置(skycto JEEditor)JVM記憶體
- Oracle與TimesTen記憶體資料庫Cache Group同步效率與TimesTen主備資料同步機制研究Oracle記憶體資料庫
- Timesten 資料庫端需要的配置資料庫
- Oracle資料庫記憶體引數調優技術的個人總結Oracle資料庫記憶體
- Linux 虛擬記憶體引數配置Linux記憶體
- TimesTen記憶體資料庫評估和計算表大小及碎片記憶體資料庫
- Oracle資料庫記憶體引數調優技術的個人總結 (2)Oracle資料庫記憶體
- Oracle資料庫記憶體引數調優技術的個人總結 (1)Oracle資料庫記憶體
- 記憶體資料庫記憶體資料庫
- 如何配置oracle資料庫伺服器的記憶體Oracle資料庫伺服器記憶體
- Tomcat中JVM記憶體溢位及合理配置TomcatJVM記憶體溢位
- JVM記憶體引數詳解及其配置調優JVM記憶體
- Mongodb記憶體資料庫MongoDB記憶體資料庫
- 理解TimesTen記憶體資料庫DBI檔案的作用以及相關故障處理記憶體資料庫
- 記憶體資料庫的行存表索引是怎麼做到加速的記憶體資料庫索引
- innodb的幾個記憶體引數記憶體
- Nagios資料庫引數配置分析iOS資料庫
- 記憶體資料庫如何發揮記憶體優勢?記憶體資料庫
- Oracle - 資料庫的記憶體結構Oracle資料庫記憶體
- Oracle - 資料庫的記憶體調整Oracle資料庫記憶體
- Oracle記憶體引數調優Oracle記憶體
- linux下的記憶體共享引數Linux記憶體
- mysql用於分配記憶體的引數MySql記憶體
- 配置資料庫非同步I/O引數資料庫非同步
- Python記憶體資料庫/引擎Python記憶體資料庫
- 構建個人記憶體資料庫記憶體資料庫
- Linux記憶體子系統——Locking Pages(記憶體鎖定)Linux記憶體