操作型別
需要時間
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...