1. 程式人生 > >MySQL --儲存引擎介紹

MySQL --儲存引擎介紹

xl_echo編輯整理,交流學習請加1280023003 百戰不敗,依不自稱常勝,百敗不頹,依能奮力前行。——這才是真正的堪稱強大!!!

在諸多資料庫管理系統中,資料引擎支援情況不一,並且引擎的種類也有很多,所以很多資料庫管理系統在引擎上都有一些自己的差異。MySQL的核心就是儲存引擎,並且MySQL提供了多個不同的儲存引擎。包括處理事務安全表的引擎和處理非事務安全表的引擎。

MySQL中的資料用各種不同的技術儲存在檔案(或者記憶體)中。這些技術中的每一種技術都使用不同的儲存機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。 --引自百度

從以上的話我們也可以看出,在MySQL中我們要儲存資料,並不是統一規範式的使用某一個引擎,而是可以針對我們需要需要的資料使用某些引擎(這裡主要以表為單位)。很多人在建立表時候都會去使用一個數據庫引擎InnoDB,該引擎是資料庫事務型首選引擎。在大部分時候都會用到,所以很多人會忽略。但是這很好的證明了,我們建立表可以選擇引擎。

使用InnoDB建立表示例:

CREATE TABLE `product` (
  `product_id` varchar(32) NOT NULL,
  `product_name` varchar(64) NOT NULL COMMENT '商品名稱',
  `
product_price` decimal(8,2) NOT NULL COMMENT '商品價格' PRIMARY KEY (`product_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';

MySQL除了InnoDB還有那些引擎?

檢視當前提供支援的引擎 SHOW ENGINES

mysql5.6的資料庫引擎

從顯示的結果我們可以看到,MySQL支援的引擎總共有8種。

InnoDB(儲存引擎)

事務型資料庫的首選引擎,支援ACID事務,支援行級鎖定。MySQL5.5之後InnoDB就成為了預設引擎。它的主要特徵有:

  • 行鎖設計,並提供了有效的提交、回滾和資料恢復的功能。
  • 支援MVCC(多版本併發控制)
  • 支援外來鍵完整性約束
  • 對於大量資料有著高效的效能

MyISAM(儲存引擎)

MyISAM是預設儲存引擎(Mysql5.1前)。它基於更老的ISAM程式碼,但有很多有用的擴充套件。MyISAM擁有較高的插入、查詢速度,但不支援事務。它的主要特徵有:

  • 對於大檔案有很好的支援(如:儲存全國區域資訊)
  • 當把刪除和更新及插入混合的時候,動態尺寸的行更少碎片。這要通過合併相鄰被刪除的塊,以及若下一個塊被刪除,就擴充套件到下一塊來自動完成。
  • NULL值被允許在索引的列中。這個佔每個鍵的0-1個位元組。
  • 所有數字鍵值以高位元組為先被儲存以允許一個更高地索引壓縮。
  • BLOB和TEXT列可以被索引

MEMORY(儲存引擎)

memory儲存引擎是MySQL中的一類特殊的儲存引擎。其使用儲存在記憶體中的內容來建立表,而且所有資料也放在記憶體中。這些特性都與InnoDB,MyISAM儲存引擎不同。它的主要特徵有:

  • memory不支援BLOB或TEXT
  • 可以在一個memory表中有非唯一鍵
  • memory儲存引擎執行hash和btree索引

MRG_MYISAM(儲存引擎)

引用MySQL官方文件中的一段話:MERGE儲存引擎,也被認識為MRG_MyISAM引擎,是一個相同的可以被當作一個來用的MyISAM表的集合."相同"意味著所有表同樣的列和索引資訊.你不能合併列被以不同順序列於其中的表,沒有恰好同樣列的表,或有不同順序索引的表.而且,任何或者所有的表可以用myisampack來壓縮

BLACKHOLE(儲存引擎)

MySQL在5.x系列提供了Blackhole引擎–“黑洞”.其作用正如其名字一樣:任何寫入到此引擎的資料均會被丟棄掉,不做實際儲存;Select語句的內容永遠是空。和Linux中的 /dev/null 檔案完成的作用完全一致。

CSV(儲存引擎)

MYSQL 5.0及以上版本支援CSV儲存引擎。CSV是MYSQL中相對比較簡單而且方便的儲存引擎了,它儲存資料直接會成為.csv格式的檔案。

ARCHIVE(儲存引擎)

這個儲存引擎基本上用於資料歸檔;它的壓縮比非常的高,儲存空間大概是innodb的10-15分之一所以它用來儲存歷史資料非常的適合,由於它不支援索引同時也不能快取索引和資料,所以它不適合作為併發訪問表的儲存引擎。

PERFORMANCE_SCHEMA(儲存引擎)

MySQL 5.5開始新增一個數據庫:PERFORMANCE_SCHEMA,主要用於收集資料庫伺服器效能引數