記憶體資料庫的行存表索引是怎麼做到加速的

ssyzuu發表於2022-07-15


各位朋友知道, 記憶體資料庫中 ,索引幾乎伴著所有結構化和非結構資料庫出現,每個資料庫使用的索引技術都有點像,但又不全像。可以肯定的是,索引的唯一目標就是為資料主人跑腿,實現更高的查詢效能!

 

那麼以記憶體分散式資料庫 RapidsDB為例 它的行存表索引是怎麼扮演好它的加速功能的呢

 

先來看跳錶索引 RapidsDB中的預設索引型別是跳錶索引,對比其他大多數資料庫(比如MYSQL)使用的B-Tree索引,RapidsDB將跳錶索引優化為在記憶體中執行,不僅可以實現無鎖並提供極快的插入效能,還提供Btree類似的O(log(n))查詢效能,非常適合OLTP遍歷查詢。

 

索引使用到的無鎖(或者叫非阻塞)演算法是跳錶索引的一個大特點:它使資料庫執行緒始終可以執行,尤其在多核CPU硬體上實現高併發負載。同時還擺脫了Btrees需要使用複雜的鎖定方案來實現執行緒安全的困局。對BWtree這類比較新的無鎖索引資料結構,規避掉被設計遠超跳錶的複雜資料結構實現無鎖。可以說跳錶的簡單性使其非常適合無鎖實現。

 

接下來看看 雜湊索引 雜湊索引在資料庫中十分常見。一般情況下,只有當查詢對索引中的每一列都使用相等過濾器時,才會使用雜湊索引。所以按理說,雜湊索引應該只在使用者的特定資料集和工作負載有明顯的需要和可測量的好處時使用。在這些特定情況下,雜湊索引提供了對唯一值的快速精確的匹配訪問。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70019064/viewspace-2905926/,如需轉載,請註明出處,否則將追究法律責任。

相關文章