儲存引擎分類

2021-08-26 17:51:55 字數 1492 閱讀 2269

操作型別

需要時間

l1 cache reference 讀取cpu的一級快取

0.5 ns

branch mispredict(轉移、分支**)

5 ns

l2 cache reference 讀取cpu的二級快取

7 ns

mutex lock/unlock 互斥鎖\解鎖

100 ns

main memory reference 讀取記憶體資料

100 ns

compress 1k bytes with zippy 1k位元組壓縮

10 us

send 2k bytes over 1 gbps network 在1gbps的網路上傳送2k位元組

20 us

read 1 mb sequentially from memory 從記憶體順序讀取1mb

250 us

round trip within same datacenter 從乙個資料中心往返一次,ping一下

500 us

disk seek 磁碟搜尋

10 ms

read 1 mb sequentially from network 從網路上順序讀取1兆的資料

10 ms

read 1 mb sequentially from disk 從磁碟裡面讀出1mb

30 ms

send packet ca->netherlands->ca 乙個包的一次遠端訪問

150 ms

不同的資料結構, 有不同的讀寫特性, 針對不同的場景, 比如, b-tree的讀寫效能比較平均, lsm結構適合寫多讀少的場景, hash的讀寫比較平均, 但是通常不適合大資料量, 等等。

m階b-tree滿足以下條件:

b+樹是b樹的乙個公升級版,相對於b樹來說b+樹更充分的利用了節點的空間,讓查詢速度更加穩定,其速度完全接近於二分法查詢。為什麼說b+樹查詢的效率要比b樹更高、更穩定;我們先看看兩者的區別

lsm tree儲存實現思路是將隨機寫轉化為順序寫,盡量保持日誌型資料庫的寫效能優勢,並提供相對較好的讀效能。具體實現方式如下:

關於lsm非常好的介紹資料:

雜湊索引(hash)是另外一種比較簡單高效的儲存引擎資料結構, 通常運用在nosql裡面, 並且在資料量不大的情況下, 因為它在記憶體裡面構建k-v或者k-list(v)型別的結構。它的查詢效率非常高, 甚至可以只查詢一次, 而像b-tree、b+tree一般需要多次, 和樹的深度有關, lsm也和level的層數有關。它的特點:

不同索引演算法的常見資料庫型別:

索引演算法

資料庫b-tree

mongodb

b+tree

mysql

lsm tree

leveldb、hbase、cassandra

hash

redis

有上面的介紹可見, 不同的資料結構有不同的特性, 而不同的資料庫採用哪一種資料結構, 也是由其支援的應用場景決定的。

MySQL儲存引擎分類

myisam不支援事務,也不支援外來鍵,但是訪問速度較快 對事務完整性沒有要求或者以select insert為主的應用基本都可以使用這個引擎來建立表。每個myisam在磁碟上儲存成3個檔案,其中檔名和表名都相同,但是副檔名分別為 frm 儲存表定義 myd mydata,儲存資料 myi myin...

mysql 的儲存引擎種類 以及分類 區別

這裡主要介紹幾種常用的儲存引擎種類 myisam innodb memory merge tokudb 1.myisam 是舊版本mysql的預設引擎,現在預設引擎是innodb。myisam引擎的主要特點就是快,沒有事務處理操作,也不支援外來鍵操作。適合於多讀取插入,少更新刪除的操作表。儲存資料分...

Mysql 儲存引擎之 MyISAM儲存引擎

myisam是預設儲存引擎。每個myisam在磁碟上儲存成三個檔案。frm檔案儲存表定義 myd檔案儲存資料 myi檔案儲存索引。要明確表示你想要用乙個myisam 請用engine表選項指出來 create table test myisam id int engine myisam 2 如下是m...