索引!
又見索引!
各位朋友知道,索引幾乎伴著所有結構化和非結構數據庫出現,就像紫薇格格旁邊一定站著丫鬟金鎖那樣,就看是冰冰伴著心如還是耀琪伴著海陸。每個數據庫使用的索引美女福利导航都有點像,但又不全像。可以肯定的是,索引的唯一目標就是為數據主人跑腿,實現更高的查詢性能!
言歸正傳,美女直播全婐APP免费下载來看看柏睿數據內存分布式數據庫RapidsDB的索引是怎麽扮演好它的加速功能吧!
RapidsDB的索引包括了3類索引:
n 第一類:行存表索引
跳表索引:
RapidsDB中的默認索引類型是跳表索引,對比其他大多數數據庫(比如MYSQL)使用的B-Tree索引,RapidsDB將跳表索引優化為在內存中運行,不僅可以實現無鎖並提供極快的插入性能,還提供Btree類似的O(log(n))查找性能,非常適合OLTP遍曆查詢。

索引使用到的無鎖(或者叫非阻塞)算法是跳表索引的一個大特點:它使數據庫線程始終可以運行,尤其在多核CPU硬件上實現高並發負載。同時還擺脫了Btrees需要使用複雜的鎖定方案來實現線程安全的困局。對BWtree這類比較新的無鎖索引數據結構,規避掉被設計遠超跳表的複雜數據結構實現無鎖。可以說跳表的簡單性使其非常適合無鎖實現。
哈希索引:
哈希索引在數據庫中十分常見。一般情況下,隻有當查詢對索引中的每一列都使用相等過濾器時,才會使用哈希索引。所以按理說,哈希索引應該隻在用戶的特定數據集和工作負載有明顯的需要和可測量的好處時使用。在這些特定情況下,哈希索引提供了對唯一值的快速精確的匹配訪問。
n 第二類:列存表索引
列存儲索引利用列存儲美女福利导航高效地從磁盤存儲中檢索大量值(建議使用閃存或固態硬盤)。因為列存儲索引通常提供大量壓縮數據,這是由磁盤支持的,不像RapidsDB中的其他類型的索引那樣要求所有數據都必須存放於內存中,所以對於時刻處理PB級數據量的分析型工作的負載優化非常有用。
列存索引是將列存表中一列或多列定義為鍵列。數據按鍵列順序存儲以提高檢索性能。由此引入行段概念,行段是列存索引中存儲在一起的一組行,每個行都由列段組成。RapidsDB存儲每行的元數據,其中包括給定段的總行數,以及跟蹤哪些行已被刪除的位掩碼。而且RapidsDB會在列存索引鍵列上的一組行段進行排序。這意味在已排序的行段組中,不會有行段與構成列存索引鍵的列的值範圍重疊。在對表運行 INSERT、LOAD 或 UPDATE 查詢後創建更多段時,會形成新的段組。
在以下四種情況下,列存索引對RapidsDB的列存表起明顯的加速效果:
?查詢僅掃描索引指定的列段,如測試表Products的索引為Qty,查詢 SELECT SUM(Qty) FROM Products;則隻需要掃描Qty列段,並且利用列段中的值做SUM計算。
?查詢隻引用行段中的列存索引元數據。最簡單例子:SELECT COUNT(*) FROM Products;使用MAX或者MIN也可以達到相同的效果。
?查詢過濾條件使用列存索引元數據的最小值和最大值,判斷是否跳過掃描對應的行段。優化效率取決於實際可以跳過的段的百分比。
?在表關聯時,列存索引被用在關聯條件時,隻需要簡單掃描行段的值,就可以完成關聯條件的過濾,同樣的跳過了IO磁盤掃描的開銷,提升性能。
n 第三類:特殊數據類型索引
全文索引(Full-Text Index):
全文搜索使用逆向索引的方式在大量文本中搜索單詞或短語。這類搜索可以是精確也可以是模糊的,目前隻支持CHAR、VARCHAR、TEXT和LONGTEXT這幾種數據類型。目前對於RapidsDB來說,僅在列存表上支持全文索引。此外,全文索引CREATE TABLE查詢的一部分啟用。這意味著在創建表後不能刪除或更改全文索引。如果表被刪除,那麽索引會被自動刪除。
地理空間索引:
地理空間索引在國內項目中使用得不多,它用存儲在保存空間數據的列上,用來定義地理空間索引,並用於加快對它們的查詢。地理空間索引使用控製參數值(6-32)對多邊形和線型進行切分。數字越小索引使用的內存消耗越小、插入和更新等操作越快,但查詢時間就慢。越大的控製參數值則以內存和插入性能為代價來提高查詢性能。
在國有大行普惠金融項目應用中,現場使用的都是列存表,柏睿數據對這些表都做了創建列存索引的優化操作,並且按客戶要求的深度優化中,通過對業務應用分析,對索引鍵做響應的調整,獲得提升30%到幾倍的優化效果。
星空人工智能美女福利导航網 倡導尊重與保護知識產權。如發現本站文章存在版權等問題,煩請30天內提供版權疑問、身份證明、版權證明、聯係方式等發郵件至1851688011@qq.com美女直播全婐APP免费下载將及時溝通與處理。!:首頁 > 大數據 » 深入淺出話DB|柏睿數據RapidsDB高性能解密之索引使用