1、innodb 儲存引擎
支援事務,其設計目標主要面向聯機事務處理(oltp)的應用。其特點是行鎖設計、支援外來鍵,並支援類似 oracle 的非鎖定讀,即預設讀取操作不會產生鎖。 從 mysql 5.5.8 版本開始是預設的儲存引擎。innodb 儲存引擎是 mysql 資料庫最為常用的一種引擎具備高可用性、高效能以及高可擴充套件性
innodb 儲存引擎將資料放在乙個邏輯的表空間中,這個表空間就像黑盒一樣由 innodb 儲存引擎自身來管理。從 mysql 4.1(包括 4.1)版本開始,可以將每個 innodb 儲存引擎的 表單獨存放到乙個獨立的 ibd 檔案中。此外,innodb 儲存引擎支援將裸裝置(row disk)用 於建立其表空間。
innodb 通過使用多版本併發控制(mvcc)來獲得高併發性,並且實現了 sql 標準 的 4 種隔離級別,預設為 repeatable 級別,同時使用一種稱為 netx-key locking 的策略來 避免幻讀(phantom)現象的產生。除此之外,innodb 儲存引擎還提供了插入緩衝(insert buffer)、二次寫(double write)、自適應雜湊索引(adaptive hash index)、預讀(read ahead) 等高效能和高可用的功能。
對於表中資料的儲存,innodb 儲存引擎採用了聚集(clustered)的方式,每張表都是按 主鍵的順序進行儲存的,如果沒有顯式地在表定義時指定主鍵,innodb 儲存引擎會為每一 行生成乙個 6 位元組的 rowid,並以此作為主鍵。
2、myisam 儲存引擎
不支援事務、表鎖設計、支援全文索引,主要面向一些 olap 數 據庫應用,在 mysql 5.5.8 版本之前是預設的儲存引擎(除 windows 版本外)。資料庫系統 與檔案系統乙個很大的不同在於對事務的支援,myisam 儲存引擎是不支援事務的。究其根 本,這也並不難理解。使用者在所有的應用中是否都需要事務呢?在資料倉儲中,如果沒有 etl 這些操作,只是簡單地通過報表查詢還需要事務的支援嗎?此外,myisam 儲存引擎的 另乙個與眾不同的地方是,它的緩衝池只快取(cache)索引檔案,而不快取資料檔案,這與 大多數的資料庫都不相同。
3、ndb 儲存引擎
4、memory 儲存引擎
正如其名,memory 儲存引擎中的資料都存放在記憶體中,資料庫重 啟或發生崩潰,表中的資料都將消失。它非常適合於儲存 oltp 資料庫應用中臨時資料的臨時表,也可以作為 olap 資料庫應用中資料倉儲的維度表。memory 儲存引擎預設使用雜湊 索引,而不是通常熟悉的 b+ 樹索引。
5、infobright 儲存引擎
第三方的儲存引擎。其特點是儲存是按照列而非行的,因此非常 適合 olap 的資料庫應用。其官方**是 上面有不少成功的資料 倉庫案例可供分析。
6、ntse 儲存引擎
網易公司開發的面向其內部使用的儲存引擎。目前的版本不支援事務, 但提供壓縮、行級快取等特性,不久的將來會實現面向記憶體的事務支援。
7、blackhole
黑洞儲存引擎,可以應用於主備複製中的分發主庫。
建立四張表,分別使用innodb,myisam,memory,blackhole儲存引擎,進行插入資料測試
create table t1(id int)engine=innodb;檢視data檔案下db1資料庫中的檔案:不同的資料庫的檔案儲存型別create table t2(id int)engine=myisam;
create table t3(id int)engine=memory;
create table t4(id int)engine=blackhole;
#.frm是儲存資料表的框架結構23
#.ibd是mysql資料檔案 45
#.myd是myisam表的資料檔案的副檔名67
#.myi是myisam表的索引的副檔名89
#發現後兩種儲存引擎只有表結構,無資料
1011
#memory,在重啟mysql或者重啟機器後,表內資料清空12#
blackhole,往表內插入任何資料,都相當於丟入黑洞,表內永遠不存記錄
讓MySQL支援InnoDB儲存引擎
innodb 介紹 innodb 儲存引擎,支援事務,行鎖,外來鍵.innodb 設計用來處理大資料量時提供最好的 效能.innodb 提供自己的快取 buffer pool 還快取資料和索引.innodb 把資料和索引存放 到表空間 tablespace 表空間是幾個磁碟檔案或者是原是裝置檔案 r...
MySQL所支援的多種儲存引擎
4.memory 5.merge 6.archive 儲存引擎就是儲存資料,建立索引,更新查詢資料等等技術的實現方式 儲存引擎是基於表的,而不是基於庫的。所以儲存引擎也可被稱為表型別。mysql支援的儲存引擎包含 innodb myisam bdb memory merge example ndb ...
mysql 儲存引擎對索引的支援
一 首先給出mysql官方文件給出的不同儲存引擎對索引的支援 從上面的圖中可以得知,mysql 是支援hash索引的,但支援和不支援又和具體的儲存引擎有關係。從圖中看到innodb是支援btree索引,這是我們眾所周知的。但是不支援hash索引。但是innodb儲存引擎支援hash索引是自適應的,i...