具有高擴充套件性的儲存引擎 TokuDB

2021-06-16 19:59:53 字數 1685 閱讀 7248

tokudb是什麼?tokudb是乙個應用在mysql和mariadb中的儲存引擎,它使用索引來加快查詢速度,具有高擴充套件性並支援hot schema modification。如果你的記錄數量過億、儲存舊的記錄或想要縮小資料占用的儲存空間,很適合使用tokudb。本文內容摘自**核心系統

- 插入效能加快20到80倍

- 壓縮資料減少儲存空間

- 資料量可擴充套件到幾個tb

- 不會產生索引碎片

- 支援hot column addition, hot indexing和mvcc

fractal tree是tokudb中使用的索引結構,是tokudb安身立命的根本,插入效能可以匹配b樹最好的情況,高於b樹最差情況兩個數量級。

1、fractal tree結構特點

- 由多個有序的陣列構成,大小呈指數級增長

- 陣列要麼全空,要麼全滿

- 資料插入到最小的陣列,如果空間不夠就將資料進行merge

2、fractal tree的建立

3、fractal tree的建立 (cont.)

4、fractal tree上的查詢

hot index creation,tokudb允許在已有table上建立索引,同時在索引建立的過程中可以進行insert和query操作。

- 需要設定伺服器變數set tokudb_create_index_online=on

- 只能使用create index命令

hot column addition and deletion(hcad),tokudb允許在已有table上新增或者刪除屬性列,同時只在很短的時間內阻塞update和query操作。

- hcad會獲取乙個表鎖,用於將髒頁刷到外存,所以會暫時阻塞其他操作

如果你要儲存blob,不要使用tokudb,因為它限制記錄不能太大;

如果你的記錄數量過億,使用tokudb;

如果你注重update的效能,不要使用tokudb,它沒有innodb快;

如果你要儲存舊的記錄,使用tokudb;

如果你想要縮小資料占用的儲存空間,使用tokudb;

careercup 擴充套件性和儲存限制10 3

給你乙個檔案,裡面包含40億個整數,寫乙個演算法找出該檔案中不包含的乙個整數,假設你有1gb記憶體可用。如果你只有10mb的記憶體呢?我們先來做個算術題,40億個整數大概有多大?40 10 8 4b 16gb 大約值,因為不是按照2的冪來做單位換算 這個明顯無法一次性裝入記憶體中。但是,如果我們用計...

NoSql的易擴充套件性

nosql現在很火很時髦,大家言必稱nosql,彷彿關係型資料庫已成陳舊落後的代名詞。但依我看,真正理解nosql的還不多,在實際專案中用過的應該就更少了。我也還不理解,更沒怎麼應用過,所以現在要努力學習。在學習過程中,常看到有吹噓nosql相比較關係型資料庫而言,有乙個優點是 易擴充套件。這怎麼理...

Flume的可擴充套件性

flume的可擴充套件性 flume採用了三層架構,分別為agent,collector和storage,每一層均可以水平擴充套件。其中,所有agent和 collector由master統一管理,這使得系統容易監控和維護,且master允許有多個 使用zookeeper進行管理和負載均衡 這就避 ...