Mysql存儲引擎簡單介紹

創建表的時候,總會這樣輸入

CREATE TABLE IF NOT EXISTS `my_table`(
   `my_table_id` INT UNSIGNED AUTO_INCREMENT,
   `my_table_title` VARCHAR(32) NOT NULL,
   PRIMARY KEY ( `my_table_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

大部分的時候,都會選擇存儲引擎 InnoDB,有些時候其他引擎不失爲一種更好的選擇.

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

 

MyISAM: 擁有較高的插入,查詢速度,但不支持事物

InnoDB :5.5版本後Mysql的默認數據庫,事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定

BDB: 源自Berkeley DB,事務型數據庫的另一種選擇,支持COMMIT和ROLLBACK等其他事務特性

Memory :所有數據置於內存的存儲引擎,擁有極高的插入,更新和查詢效率。但是會佔用和數據量成正比的內存空間。並且其內容會在Mysql重新啓動時丟失

Merge :將一定數量的MyISAM表聯合而成一個整體,在超大規模數據存儲時很有用

Archive :非常適合存儲大量的獨立的,作爲歷史記錄的數據。因爲它們不經常被讀取。Archive擁有高效的插入速度,但其對查詢的支持相對較差

Federated: 將不同的Mysql服務器聯合起來,邏輯上組成一個完整的數據庫。非常適合分佈式應用

Cluster/NDB :高冗餘的存儲引擎,用多臺數據機器聯合提供服務以提高整體性能和安全性。適合數據量大,安全和性能要求高的應用

CSV: 邏輯上由逗號分割數據的存儲引擎。它會在數據庫子目錄裏爲每個數據表創建一個.CSV文件。這是一種普通文本文件,每個數據行佔用一個文本行。CSV存儲引擎不支持索引。

BlackHole :黑洞引擎,寫入的任何數據都會消失,一般用於記錄binlog做複製的中繼

另外,Mysql的存儲引擎接口定義良好。有興趣的開發者通過閱讀文檔編寫自己的存儲引擎。

當我們選定了存儲引擎創建表以後,發現需要改變引擎可以使用來改變

alter table tableName engine=enginname;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章