mysql儲存引擎介紹 MySQL儲存引擎介紹

2021-10-19 19:23:31 字數 2326 閱讀 4224

[toc]

## innodb儲存引擎

其特點十行鎖設計、支援危機,並支援型別與oracle的非鎖定讀,即預設讀取操作不會產生鎖。

innodb通過使用多版本併發控制(mvcc) 來獲取高併發性,並且實現了sql標準的4種隔離,預設為repeatable級別。同時使用一種被稱為next-keylocking的策略來避免幻讀(phantom)現象的產生。 除此之外,innodb儲存引擎還提供了插入緩衝(insert buffer)、二次寫(double write)、自適應雜湊索引(adaptive hash index)、innodb儲存的鎖資訊(lock info)、資料字典資訊(data dictionary)等高效能和高可用的功能。

對於表中資料的儲存, innodb儲存引擎採用了聚集(slustered)的方式,因此每張表的儲存都是按主鍵的順序存放。如果沒有顯式地在表定義時指定主鍵,innodb儲存引擎會為每一行生成乙個6位元組的rowid,並以此為主鍵。

## myisam儲存引擎

myisam儲存引擎**不支援事務**、表鎖設計,支援全文索引,主要面向一些olap資料庫應用。 myisam儲存引擎另乙個與眾不同的地方是它的緩衝池只快取(cache)索引檔案,而不緩衝資料檔案。

myisam儲存引擎表由myd和myi組成,myd用來存放資料檔案,myi用來存放索引檔案。 可以通過myisampack工具來進一步壓縮資料檔案(採用赫夫曼【huffman】)編碼靜態演算法來壓縮資料,因此壓縮之後的資料表示唯讀的, 也可以通過該工具解壓資料檔案。 從5.0版本之前 預設支援表大小為4gb,5.0開始預設支援256tb的單錶資料。

!(## ndb儲存引擎

ndb儲存引擎是乙個集群儲存引擎,類似於oracle 的rac集群,不過與其架構不同的是,其結構是share nothing 的集群架構,因此能提供更高的可用性。ndb的特點是資料全部放在記憶體中(mysql 5.1版本開始,可以將非索引資料放在磁碟上),因此主鍵查詢速度極快,並且通過新增ndb資料儲存節點(data node)可以線性地提高資料庫效能,是高可用、高效能的集群系統。

注意:ndb儲存引擎的連線操作(join)是在mysql資料庫層完成的 ,而不是在儲存引擎層完成的。 這意味著,複雜的挎包和操作需要巨大的網路開銷,因此查詢速度很慢。

!(## memory儲存引擎

memory儲存引擎(之前稱為heap儲存引擎)將表中的資料存放在記憶體中,如果資料重啟或者發生崩潰,表中的資料將不在 所以適合用於儲存臨時資料的臨時表,以及資料倉儲的緯度表。 memory儲存引擎預設使用雜湊索引,而不是我們熟悉的b+樹狀索引。

memory儲存引擎速度非常快,但是也有一定的限制。比如:只支援表鎖,併發效能差。並且不支援text和blob列型別。最重要的是,儲存變長字段(varchar)時是按照定常字段(char)的方式進行的,因此會浪費記憶體(已經給出了patch解決方案)。

mysql資料庫使用memory儲存引擎作為臨時表存放查詢中間的結果集。 如果中間結果集大於memory儲存引擎表的容量設定,或者含有text或blob列型別字段,則mysql資料庫會轉換成myisam儲存引擎表而存放到磁碟。因為myisam不快取資料檔案,所以這是產生的臨時表的效能對於查詢會有損失。

## archive儲存引擎

archive儲存引擎只支援insert 和 select 操作, mysql5.1版本支援索引。 archive儲存引擎使用zlib演算法將資料行進行壓縮 壓縮比一般可達1:10。可以用來做日誌資訊。 archive儲存引擎使用行鎖來實現高併發的插入操作,但是其本身不是書屋安全的儲存引擎,其設計目標主要是提供高數的插入和壓縮功能。

## federated 儲存引擎

federated 儲存引擎表並不存放資料,它只是指向一台遠端mysql資料庫伺服器上的表。這非常類似於sql server 的鏈結伺服器和oracle的透明閘道器,不同的是,當前federated儲存引擎只支援mysql資料庫表,不支援異構資料庫表。

## maria儲存引擎

maria儲存引擎 是新開發訂單引擎,設計目標主要是取代myisam儲存引擎,從而成為mysql的預設儲存引擎。

特點:註冊快取資料和索引檔案,應用了行鎖設計,提供了mvcc功能,支援事務和非事務安全的選項,以及更好的blob字元型別的處理效能。

## 其他儲存引擎

如:merge、csv、sphinx和infobright等。

不同之處:儲存容量的限制、事務支援、鎖的粒度、mvcc支援、支援的索引、備份和複製等。

!(通過`show engines\g`查詢information_schema架構下的engines表。

!(可以通過更換儲存引擎來區分表的大小:

myisam引擎表大小為:40.7mb, innodb引擎表大小為:113.6mb, archive引擎表大小為:20.2mb

!(

mysql儲存引擎介紹 MySQL儲存引擎簡單介紹

mysql使用的是外掛程式式儲存引擎。主要包含儲存引擎有 myisam。innodb,ndb cluster,maria。falcon,memory,archive,merge。federated。當中最為廣泛的是myisam 和innodb兩種儲存引擎,所以接下來對它們做簡介。myisam 儲存引...

MySQL儲存引擎介紹

1.mysql儲存引擎對比 如上圖所示,為幾種常見的儲存引擎的對比,當然還有像csv儲存引擎 不支援索引 和blackhole黑洞引擎 寫入的資料都會消失,一般用作資料複製的中繼 等,但myisam和innodb引擎是最常見的,myisam適用於事務的處理不多的情況,innodb適用於事務處理比較多...

MySQL 儲存引擎介紹

show engines 檢視可供選用的儲存引擎 注 mrg myisam和ndbcluster分別是merge 和 ndb的同義詞。注 memory儲存引擎會把表放在記憶體裡,而非磁碟上 預設情況下,innodb 引擎會把表的資料和索引儲存在它的系統表空間裡。innodb 儲存引擎 mysql 的...