MySQL資料庫儲存引擎詳解

2021-04-09 05:52:25 字數 2102 閱讀 4530

儲存引擎是什麼?

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

例如,如果你在研究大量的臨時資料,你也許需要使用記憶體儲存引擎。記憶體儲存引擎能夠在記憶體中儲存所有的**資料。又或者,你也許需要乙個支援事務處理的資料庫(以確保事務處理不成功時資料的回退能力)。

這些不同的技術以及配套的相關功能在mysql中被稱作儲存引擎(也稱作表型別)。mysql預設配置了許多不同的儲存引擎,可以預先設定或者在mysql伺服器中啟用。你可以選擇適用於伺服器、資料庫和**的儲存引擎,以便在選擇如何儲存你的資訊、如何檢索這些資訊以及你需要你的資料結合什麼效能和功能的時候為你提供最大的靈活性。

選擇如何儲存和檢索你的資料的這種靈活性是mysql為什麼如此受歡迎的主要原因。其它資料庫系統(包括大多數商業選擇)僅支援一種型別的資料儲存。遺憾的是,其它型別的資料庫解決方案採取的「乙個尺碼滿足一切需求」的方式意味著你要麼就犧牲一些效能,要麼你就用幾個小時甚至幾天的時間詳細調整你的資料庫。使用mysql,我們僅需要修改我們使用的儲存引擎就可以了。

在這篇文章中,我們不準備集中討論不同的儲存引擎的技術方面的問題(儘管我們不可避免地要研究這些因素的某些方面),相反,我們將集中介紹這些不同的引擎分別最適應哪種需求和如何啟用不同的儲存引擎。為了實現這個目的,在介紹每乙個儲存引擎的具體情況之前,我們必須要了解一些基本的問題。

儲存引擎:myisam、merge、memory、example

myisam

myisam引擎是大多數mysql安裝程式的預設引擎,起源於早期版本mysql支援的isam引擎。這種引擎提供了最佳的效能和功能的組合,儘管它缺少事務處理功能(使用innodb或者bdb引擎)並且使用表級鎖定。

除非你需要事務處理功能,否則myisam引擎可以有效儲存和處理絕大多數應用所需的資料。不過如果資料插入和更新操作比讀取資料還要多的的應用可能會引起myisam引擎效能降低。根據原來的設計思路,myisam引擎是針對那些90%以上的資料庫訪問都是讀操作的資料庫來優化的。

由於表級鎖定,有大量的插入或者更新行的資料庫就會成為效能的瓶頸,因為這個表在增加資料的時候被鎖定了。幸運的是這種限制在非事務處理資料庫中不是個大問題。

表1. myisam小結

名稱       myisam

版本       v3.23

預設安裝     是

資料儲存限制   無

索引限制     每個表64個索引;每個索引最多16個列

事務處理支援   不支援

鎖定級別     表級鎖定

merge

merge引擎型別允許你把許多結構

相同的表合併為乙個表。然後,你可以執行查詢,從多個表返回的結果就像從乙個表返回的結果一樣。每乙個合併的表必須有同樣的表定義。

merge儲存引擎在下面這種使用場合會最為有用,如果需要把日誌紀錄不停的錄入mysql資料庫,並且每天、每週或者每個月都建立乙個單一的表,而且要製作來自多個表的合計查詢,merge表這時會非常有效。然而,這項功能有侷限性。你只能合併myisam表而且必須嚴格遵守相同的表定義的限制。雖然這看起來好像是乙個大問題,但是,如果你使用另外一種表型別(例如innodb),這種合併可能就不需要了。

表 2. merge小結

名稱      merge

版本      v3.23.25

預設安裝    是

資料儲存限制  基本表必須是myisam

索引限制    n/a

事務處理支援  否

鎖定級別    表級鎖定

example

example引擎實際上是乙個儲存引擎程式設計的例子,能夠用作mysql系統中其它引擎的基礎。example不支援資料插入,對於任何形式的資料庫訪問來說也不是乙個實用的引擎。然而,example是乙個很好的指南,指導你如何開發自己的儲存引擎,因此對於程式設計師來說是乙個有效的引擎。

表4. example小結

名稱      example

版本      4.1.3

預設安裝    否

資料儲存限制  n/a

索引限制    n/a

事務處理支援  n/a

鎖定級別    n/a

Mysql資料庫儲存引擎

儲存引擎是什麼?mysql中的資料用各種不同的技術儲存在檔案 或者記憶體 中。這些技術中的每一種技術都使用不同的儲存機制 索引技巧 鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。例如,如果你在研究大量的臨時資料,你也許需要使...

資料庫 mysql儲存引擎

mysql常用的四種引擎的介紹 1 myisam儲存引擎 不支援事務 也不支援外來鍵,優勢是訪問速度快,對事務完整性沒有要求或者以select,insert為主的應用基本上可以用這個引擎來建立表,適合寫多的情況。frm儲存當前資料表的結構,myd儲存當前表的資料,myi儲存當前資料表的索引 支援表級...

mysql資料庫儲存引擎

我們在 mysql儲存引擎有哪些 一節中介紹了 mysql 中幾種主要的儲存引擎以及它們的使用特性,本節將介紹如何根據不同的應用場景去選擇合適的儲存引擎。在使用 mysql 資料庫管理系統時,選擇乙個合適的儲存引擎是乙個非常複雜的問題。不同的儲存引擎都有各自的特性 優勢和使用的場合,正確的選擇儲存引...