創建表的時候,總會這樣輸入
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;