最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

以mysql為例詳解ToplingDB?的?UintIndex

 更新時(shí)間:2022年08月19日 10:13:14   作者:雷鵬  
本文主要介紹了以mysql為例詳解ToplingDB的UintIndex,在ToplingDB的CO-Index(Compressed?Ordered?Index)家族中,Nest?Succinct?Trie是最通用的,更多相關(guān)內(nèi)容需要的朋友可以參考一下

前言

在 ToplingDB 的 CO-Index(Compressed Ordered Index) 家族中,Nest Succinct Trie 是最通用的。但是,伴隨通用的,往往是低效。我們針對一些特殊場景,采用了特殊的實(shí)現(xiàn),用以提高性能……

這里面,最特殊的一類 Index,就是 UintIndex,顧名思義,就是 Key 為 unsigned int 時(shí)的 index。

以 MySQL 為例

在 MySQL 中,我們往往會(huì)建立這樣一個(gè)表:

CREATE TABLE Student(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) INDEX,
    dorm_id INT INDEX,
    -- others ...
);

這里的 PRIMARY KEY 最終體現(xiàn)到 MyRocks,是這樣的形式:

PrefixIDid

通過配置,我們可以通過 keyPrefixLen 將 PrefixID 分離出去,這樣,Index 中就只剩下一個(gè) id 字段了,并且,在 SST 中,這些 id 往往都是比較緊密的范圍(被刪除的 id 是范圍中的空洞),比如,在某個(gè) SST 中,存儲(chǔ)的 id 范圍是 1,000,000~2,000,000。

并且,我們知道,CO-Index 會(huì)將用戶 Key(在這里就是 id 字段) 映射到一個(gè) 內(nèi)部ID,再用這個(gè) 內(nèi)部ID 去訪問 PA-Zip……

在一個(gè) SST 中,把這一切串起來,我們就能使用簡單且高效的方式來實(shí)現(xiàn) Index 了:

圖中的 ValueOrd 就是前面說的 內(nèi)部ID,Index 共有 108 個(gè) Key,BitMap 中有 MaxKey - MinKey + 1 = 229 個(gè) Bit。

  • 如果這個(gè)范圍中,一個(gè)空洞也沒有,那么,Index 中我們只需要保存 id 的最大最小值。
    • 內(nèi)部ID = Student.id - MinStudentID
  • 如果這個(gè)范圍中,只有極少數(shù)的空洞,那么,Index 中我們只需要保存那些空洞 中的 id。
    • 內(nèi)部ID = Student.id - (Hole num before this Student.id)
  • 如果這個(gè)范圍中,有相當(dāng)數(shù)量的空洞,那么,Index 中我們只需要保存一個(gè) BitMap,其中相應(yīng) bit 的含義是這個(gè) id 是否存在。
    • 利用 Rank-Select 的思想:內(nèi)部ID = BitMap.rank1(id)

進(jìn)一步,在概念上,如果我們把 一個(gè)空洞也沒有 和 只有極少數(shù)的空洞 也用 Rank-Select 來表達(dá):

那么,這三種情況,在形式上就可以統(tǒng)一起來!實(shí)際上,在代碼實(shí)現(xiàn)中,這三種不同的 Rank-Select 實(shí)現(xiàn)是作為模板類 UintIndex 的模板參數(shù)的,在保持抽象的同時(shí),又不損失性能。

應(yīng)用到 MongoDB

在 MongoDB 中,也存在類似 MySQL Student.id 這樣的東西:

MongoDB 有兩大類 Key Value 數(shù)據(jù),RecordStore(即 Collection) 和 Index:

這樣,MongoDB 的 RecordStore 也可以利用 UintIndex

壓縮率 & 性能

壓縮率自然不用說,UintIndexAllOne 的壓縮率接近于無窮大,壓縮率最差的 UintIndexBitMap,其壓縮率也在 30 倍以上!

性能,最關(guān)鍵的是性能,相比傳統(tǒng)的塊壓縮,Nest Succinct Trie 最大的性能劣勢在于順序掃描(從頭至尾順序掃描,定位到某個(gè)點(diǎn)然后接著順序掃描),因?yàn)閷τ?Nest Succinct Trie,即便是順序掃描,它的計(jì)算也很復(fù)雜,并且內(nèi)存訪問非常隨機(jī)。而對于 UintIndex,事情就簡單多了,比 Nest Succinct Trie 會(huì)快 100 倍以上,而其中占比最大的性能開銷,實(shí)際上是函數(shù)調(diào)用本身!

到此這篇關(guān)于以mysql為例詳解ToplingDB 的 UintIndex的文章就介紹到這了,更多相關(guān)mysql UintIndex內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 優(yōu)化InnoDB表BLOB,TEXT列的存儲(chǔ)效率

    優(yōu)化InnoDB表BLOB,TEXT列的存儲(chǔ)效率

    今天小編就為大家分享一篇關(guān)于優(yōu)化InnoDB表BLOB,TEXT列的存儲(chǔ)效率,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • mysql data文件夾位置查找

    mysql data文件夾位置查找

    在mysql安裝之后,如何找到自己的mysql數(shù)據(jù)庫的安裝位置,本文將介紹詳細(xì)的解決方法,需要的朋友可以參考下
    2012-12-12
  • MySQL中的ORDER BY問題

    MySQL中的ORDER BY問題

    這篇文章主要介紹了MySQL中的ORDER BY問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • mysql-8.0.30壓縮包版安裝和配置MySQL環(huán)境過程

    mysql-8.0.30壓縮包版安裝和配置MySQL環(huán)境過程

    該文章介紹了如何在Windows系統(tǒng)中下載、安裝和配置MySQL數(shù)據(jù)庫,包括下載地址、解壓文件、創(chuàng)建和配置my.ini文件、設(shè)置環(huán)境變量、初始化MySQL服務(wù)、啟動(dòng)服務(wù)以及修改root用戶密碼等步驟
    2025-01-01
  • Mysql數(shù)據(jù)庫使用concat函數(shù)執(zhí)行SQL注入查詢

    Mysql數(shù)據(jù)庫使用concat函數(shù)執(zhí)行SQL注入查詢

    這篇文章主要介紹了Mysql數(shù)據(jù)庫使用concat函數(shù)執(zhí)行SQL注入查詢,concat函數(shù)在SQL注入查詢中會(huì)有意想不到的作用,本文就起講解它的使用,需要的朋友可以參考下
    2015-04-04
  • MySQL8.0.20壓縮版本安裝教程圖文詳解

    MySQL8.0.20壓縮版本安裝教程圖文詳解

    這篇文章主要介紹了MySQL8.0.20壓縮版本安裝教程,需本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,要的朋友可以參考下
    2020-08-08
  • MySQL復(fù)制優(yōu)點(diǎn)、原理詳解

    MySQL復(fù)制優(yōu)點(diǎn)、原理詳解

    本篇文章主要給大家詳細(xì)講解了MySQL復(fù)制優(yōu)點(diǎn)以及Mysql復(fù)制的原理知識,對此有興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • 淺談MySQL索引為什么是B+樹

    淺談MySQL索引為什么是B+樹

    MySQL使用B+樹索引來提高數(shù)據(jù)查詢效率,B+樹是一種自平衡的多路搜索樹,具有平衡性、多路性和高效的查找、插入和刪除操作,與B樹相比,B+樹的所有數(shù)據(jù)都存儲(chǔ)在葉子節(jié)點(diǎn)中,并且葉子節(jié)點(diǎn)通過鏈表連接,這使得范圍查詢更加高效,因此,MySQL選擇B+樹作為索引的數(shù)據(jù)結(jié)構(gòu)
    2024-12-12
  • Mysql select語句設(shè)置默認(rèn)值的方法

    Mysql select語句設(shè)置默認(rèn)值的方法

    這篇文章主要介紹了Mysql select語句設(shè)置默認(rèn)值的方法,需要的朋友可以參考下
    2014-05-05
  • MySQL優(yōu)化之分區(qū)表

    MySQL優(yōu)化之分區(qū)表

    這篇文章主要介紹了MySQL優(yōu)化之分區(qū)表,需要的朋友可以參考下
    2016-06-06

最新評論

赣州市| 睢宁县| 忻城县| 台湾省| 天长市| 桐柏县| 长葛市| 泰来县| 南昌市| 丰城市| 宜春市| 项城市| 东港市| 九龙城区| 霍州市| 岗巴县| 礼泉县| 子长县| 乌苏市| 高州市| 洪江市| 高邮市| 藁城市| 平果县| 邵武市| 镇赉县| 黔南| 峡江县| 华池县| 湘潭市| 泊头市| 甘谷县| 庄河市| 临高县| 和平区| 田林县| 宜君县| 永福县| 蒲城县| 松桃| 高碑店市|