亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

以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 是最通用的。但是,伴隨通用的,往往是低效。我們針對(duì)一些特殊場(chǎng)景,采用了特殊的實(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

通過(guò)配置,我們可以通過(guò) 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 去訪問(wèn) PA-Zip……

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

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

  • 如果這個(gè)范圍中,一個(gè)空洞也沒(méi)有,那么,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è)空洞也沒(méi)有 和 只有極少數(shù)的空洞 也用 Rank-Select 來(lái)表達(dá):

那么,這三種情況,在形式上就可以統(tǒng)一起來(lái)!實(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

壓縮率 & 性能

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

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

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

相關(guān)文章

  • Centos7使用yum安裝MySQL及實(shí)現(xiàn)遠(yuǎn)程連接的方法

    Centos7使用yum安裝MySQL及實(shí)現(xiàn)遠(yuǎn)程連接的方法

    因?yàn)镸ySQL被Oracle收購(gòu),目前推薦使用mariadb數(shù)據(jù)庫(kù)。下面通過(guò)本文給大家分享Centos7使用yum安裝MySQL及實(shí)現(xiàn)遠(yuǎn)程連接的方法,感興趣的朋友一起看看吧
    2017-07-07
  • MySQL數(shù)據(jù)庫(kù)約束詳解

    MySQL數(shù)據(jù)庫(kù)約束詳解

    mysql常見(jiàn)約束有:1、非空約束“not?null”;2、唯一性約束“unique”;3、主鍵約束“primary?key”;4、外鍵約束“foreign?key”;5、默認(rèn)值約束“Default”等等。
    2022-10-10
  • mysql下float類型使用一些誤差詳解

    mysql下float類型使用一些誤差詳解

    我想很多朋友都不怎么會(huì)在mysql中使用float類型,特別是用到金錢(qián)時(shí)我們可能會(huì)用雙精度來(lái)做,我們知道m(xù)ysql的float類型是單精度浮點(diǎn)類型不小心就會(huì)導(dǎo)致數(shù)據(jù)誤差
    2012-11-11
  • Mysql8.0不存在mysql.proc表的解決

    Mysql8.0不存在mysql.proc表的解決

    MySQL 8.0中官方移除了proc表,MySQL 5.7版本中還是存在proc表的,本文就介紹MySQL 8.0的替代方案,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • mysql如何分別按年/月/日/周分組統(tǒng)計(jì)數(shù)據(jù)詳解

    mysql如何分別按年/月/日/周分組統(tǒng)計(jì)數(shù)據(jù)詳解

    我們?cè)谟肕ysql抽取數(shù)據(jù)時(shí)候,經(jīng)常需要按照天、周、月等不同的粒度對(duì)數(shù)據(jù)進(jìn)行分組統(tǒng)計(jì),下面這篇文章主要給大家介紹了關(guān)于mysql如何分別按年/月/日/周分組統(tǒng)計(jì)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • MySQL性能設(shè)置

    MySQL性能設(shè)置

    網(wǎng)站訪問(wèn)量越來(lái)越大,MySQL自然成為瓶頸,因此最近我一直在研究 MySQL 的優(yōu)化,第一步自然想到的是 MySQL 系統(tǒng)參數(shù)的優(yōu)化
    2006-12-12
  • window10中mysql8.0修改端口port不生效的解決方法

    window10中mysql8.0修改端口port不生效的解決方法

    mysql配置文件默認(rèn)位置,端口號(hào)等信息需要在my.ini文件中修改,若修改安裝位置的my-default文件文件或新建my.ini文件是不生效的,本文主要介紹了window10中mysql8.0修改端口port不生效的解決方法,感興趣的可以了解一下
    2023-11-11
  • Mysql聯(lián)合查詢UNION和Order by同時(shí)使用報(bào)錯(cuò)問(wèn)題的解決辦法

    Mysql聯(lián)合查詢UNION和Order by同時(shí)使用報(bào)錯(cuò)問(wèn)題的解決辦法

    很多朋友剛使用聯(lián)合查詢UNION的時(shí)候常常會(huì)理所當(dāng)然的將聯(lián)合查詢理解為把沒(méi)一個(gè)子查詢的結(jié)果集組合成一個(gè)大的結(jié)果集
    2014-04-04
  • Mysql一主多從部署的實(shí)現(xiàn)步驟

    Mysql一主多從部署的實(shí)現(xiàn)步驟

    本文主要介紹了Mysql一主多從部署的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • MySQL sleep函數(shù)使用方法詳解

    MySQL sleep函數(shù)使用方法詳解

    sleep函數(shù)時(shí)「延時(shí)」指定時(shí)間(單位秒),也就是讓程序停止執(zhí)行一段指定的時(shí)間,本文就給大家簡(jiǎn)單的介紹一下MySQL sleep函數(shù)使用方法,需要的朋友可以參考下
    2023-07-07

最新評(píng)論