MySQL的存儲引擎

MySQL的存儲引擎

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

選擇如何存儲和檢索你的數據的這種靈活性是MySQL爲什麼如此受歡迎的主要原因。其它數據庫系統(包括大多數商業選擇)僅支持一種類型的數據存儲。遺憾的是,其它類型的數據庫解決方案採取的“一個尺碼滿足一切需求”的方式意味着你要麼就犧牲一些性能,要麼你就用幾個小時甚至幾天的時間詳細調整你的數據庫。使用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的存儲引擎接口定義良好。有興趣的開發者通過閱讀文檔編寫自己的存儲引擎。

·顯示錶的當前狀態值
show table status like 'tablename';
·若要修改默認引擎,可以修改配置文件中的default-storage-engine
可以用命令Alter table tableName engine =engineName

1、查看當前數據庫的默認引擎
show variables like 'default_storage_engine';
2、列出當前數據庫所支持到引擎。其中Value顯示爲disabled的記錄表示數據庫支持此引擎,而在數據庫啓動時被禁用。
show engines和show variables like 'have%'
3、可以使用下面語句來查詢哪些存儲引擎支持事物處理:
select engine from information_chema.engines where transactions = 'yes';
4、在創建表到時候通過engine=...或type=...來指定所要使用到引擎。
5、查看指定表的引擎
show table status from DBname;

MySQL的存儲引擎





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