MySQL下的存儲引擎

一、什麼是存儲引擎?

存儲引擎是MySQL中基於表提供的訪問文件的一種機制。對於MySQL來說,它提供了多種類型的存儲引擎,我們可以根據對數據處理的需求,選擇不同的存儲引擎,從而最大限度的利用MySQL強大的功能。

二、分類

InnoDB存儲引擎

①是windows下MySQL數據庫默認的存儲引擎。

②支持事務、支持行鎖、支持事務安全表(ACID)。

支持外鍵,在存儲表中的數據時,每張表都是按照主鍵的順序進行存方放,如果在定義表時沒有指定主鍵,則InnoDB會爲每一行生成一個6字節的rowid,並以此作爲主鍵。

④不支持全文索引。

注:行鎖-》有前提,只有出現在以索引的方式查找時,進行行鎖。對於非索引項(當where條件沒有加主鍵時)加的依舊是表鎖。

★適合於需要事務支持、外鍵約束、自動災難恢復、大量updata的表中。

MyISAM存儲引擎

①是Linux下MySQL數據庫默認的存儲引擎。

②支持全文索引、表鎖、壓縮表、空間數據索引。

③不支持事務、不支持外鍵。

④當我們建立一個MyISAM引擎的表時,本地磁盤會生成三個文件。分別爲:

表名.FRM:用來存儲建表的信息

數據文件名.MYD:存儲數據(MYData)

索引文件名.MYI:存儲索引(MYIndex)

注:表鎖-》如果現在要進行select操作,系統默認就會加讀鎖。

***********************************************

* 讀鎖:指不允許外界進行write操作。 *

* 寫鎖:指不允許外界進行read和write操作。 *

***********************************************

★適合在選擇密集型(篩選速度快)和插入密集型(允許同時插入)的表中使用。

MEMORY存儲引擎

①要求存儲在MEMORY數據庫表裏的數據使用的長度是不變的,所以不支持test、blob字段。

②數據存放在內存中,速度快。

★適合存放臨時表、目標數據小且被頻繁使用的表。

ARCHIVE存儲引擎

①archive是歸檔的意思,只支持select和insert。

★壓縮型,有很好的壓縮機制,使用了zlib壓縮庫,在記錄被請求時會實時壓縮,經常用來當倉庫使用。適用於日誌文件。

三、總結

針對每個存儲引擎其特點對比如下:

功能   /   存儲引擎類型InnoDB MyISAMMEMORY ARCHIVE
存儲限制 64TB256TBRAMnone
支持事務yesnonono
支持全文索引noyesnono
支持數索引yesyesyesno
支持哈希索引nonoyesno
支持數據緩存 yesnoN/Ano
支持外鍵yesnonono

不同的存儲引擎有不同的特點,在選擇存儲引擎時,應該根據需求,使用合適的存儲引擎,從而提高整個數據庫的性能。

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