一、mysql儲存引擎概述
1.1 什麼是儲存引擎?
mysql中的資料用各種不同的技術儲存在檔案(或者記憶體)中。這些技術中的每一種技術都使用不同的儲存機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。
例如,如果你在研究大量的臨時資料,你也許需要使用記憶體儲存引擎。記憶體儲存引擎能夠在記憶體中儲存所有的**資料。又或者,你也許需要乙個支援事務處理的資料庫(以確保事務處理不成功時資料的回退能力)。
這些不同的技術以及配套的相關功能在mysql中被稱作儲存引擎(也稱作表型別)。
mysql預設配置了許多不同的儲存引擎,可以預先設定或者在mysql伺服器中啟用。你可以選擇適用於伺服器、資料庫和**的儲存引擎,以便在選擇如何儲存你的資訊、如何檢索這些資訊以及你需要你的資料結合什麼效能和功能的時候為你提供最大的靈活性。
選擇如何儲存和檢索你的資料的這種靈活性是mysql為什麼如此受歡迎的主要原因。其它資料庫系統 (包括大多數商業選擇)僅支援一種型別的資料儲存 。
遺憾的是,其它型別的資料庫解決方案採取的「乙個尺碼滿足一切需求」的方式意味著你要麼就犧牲一些效能,要麼你就用幾個小時甚至幾天的時間詳細調整你的資料庫。使用mysql,我們僅需要修改我們使用的儲存引擎就可以了。
1.2 mysql支援哪些儲存引擎
mysql5.6支援的儲存引擎包括innodb、myisam、memory、csv、blackhole、federated、mrg_myisam、archive、performance_schema。其中ndb和innodb提供事務安全表,其他儲存引擎都是非事務安全表。
1.3 各種搜尋引擎介紹
innodb:mysql 5.6 版本預設的儲存引擎。innodb 是乙個事務安全的儲存引擎,它具備提交、回滾以及崩潰恢復的功能以保護使用者資料。innodb 的行級別鎖定以及 oracle 風格的一致性無鎖讀提公升了它的多使用者併發數以及效能。innodb 將使用者資料儲存在聚集索引中以減少基於主鍵的普通查詢所帶來的 i/o 開銷。為了保證資料的完整性,innodb 還支援外來鍵約束。
myisam:myisam既不支援事務、也不支援外來鍵、其優勢是訪問速度快,但是表級別的鎖定限制了它在讀寫負載方面的效能,因此它經常應用於唯讀或者以讀為主的資料場景。
memory:在記憶體中儲存所有資料,應用於對非關鍵資料由快速查詢的場景。memory型別的表訪問資料非常快,因為它的資料是存放在記憶體中的,並且預設使用hash索引,但是一旦服務關閉,表中的資料就會丟失
blackhole:黑洞儲存引擎,類似於 unix 的 /dev/null,archive 只接收但卻並不儲存資料。對這種引擎的表的查詢常常返回乙個空集。這種表可以應用於 dml 語句需要傳送到從伺服器,但主伺服器並不會保留這種資料的備份的主從配置中。
csv:它的表真的是以逗號分隔的文字檔案。csv 表允許你以 csv 格式匯入匯出資料,以相同的讀和寫的格式和指令碼和應用互動資料。由於 csv 表沒有索引,你最好是在普通操作中將資料放在 innodb 表裡,只有在匯入或匯出階段使用一下 csv 表。
ndb:(又名 ndbcluster)——這種集群資料引擎尤其適合於需要最高程度的正常執行時間和可用性的應用。注意:ndb 儲存引擎在標準 mysql 5.6 版本裡並不被支援。目前能夠支援
mysql 集群的版本有:基於 mysql 5.1 的 mysql cluster ndb 7.1;基於 mysql 5.5 的 mysql cluster ndb 7.2;基於 mysql 5.6 的 mysql cluster ndb 7.3。同樣基於 mysql 5.6 的 mysql cluster ndb 7.4 目前正處於研發階段。
merge:允許 mysql dba 或開發者將一系列相同的 myisam 表進行分組,並把它們作為乙個物件進行引用。適用於超大規模資料場景,如資料倉儲。
federated:提供了從多個物理機上聯接不同的 mysql 伺服器來建立乙個邏輯資料庫的能力。適用於分布式或者資料市場的場景。
example:這種儲存引擎用以儲存闡明如何開始寫新的儲存引擎的 mysql 原始碼的例子。它主要針對於有興趣的開發人員。這種儲存引擎就是乙個啥事也不做的 "存根"。你可以使用這種引擎建立表,但是你無法向其儲存任何資料,也無法從它們檢索任何索引。
二、常用儲存引擎及使用場景
innodb:用於事務處理應用程式,支援外來鍵和行級鎖。如果應用對事物的完整性有比較高的要求,在併發條件下要求資料的一致性,資料操作除了插入和查詢之外,還包括很多更新和刪除操作,那麼innodb儲存引擎是比較合適的。innodb除了有效的降低由刪除和更新導致的鎖定,還可以確保事務的完整提交和回滾,對於類似計費系統或者財務系統等對資料準確要求性比較高的系統都是合適的選擇。
myisam:如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不高,那麼可以選擇這個儲存引擎。
memory:將所有的資料儲存在記憶體中,在需要快速定位記錄和其他類似資料的環境下,可以提供極快的訪問。memory的缺陷是對錶的大小有限制,雖然資料庫因為異常終止的話資料可以正常恢復,但是一旦資料庫關閉,儲存在記憶體中的資料都會丟失。
上傳卡正在交付 你正在用的無人值守稱重智慧型化在哪?
無人值守稱重是用於地磅稱重上的管理軟體。在2014年被衡安軟體首次提出。如今已經發展成了非常成熟的軟體,有眾多的分類。就是最近幾年,無人值守稱重應用的越來越廣。不少企業的工廠都安裝了這套軟體,實現了智慧型化。但是無人值守稱重軟體的智慧型化在什麼地方呢?一 智慧型門禁系統 智慧型門禁系統能夠自動識別進...
mysql切換引擎 mysql轉換引擎的方法
有很多方法可以將表的儲存引擎轉換成另外一種引擎,每種方法都各有優缺點 a alter table 將表從乙個引擎直接改為另外乙個引擎最簡單的辦法 alter table tb name engine innodb 要注意 這種方法需要執行很長的時間,mysql會按行將資料從原表複製到另外一張新錶中,...
mysql 事件引擎 MYSQL儲存引擎的比較
為什麼mysql的儲存引擎myisam比innodb查詢速度快 myisam只有索引快取 innodb不分索引檔案資料檔案 innodb buffer myisam只能管理索引,在索引資料大於分配的資源時,會由作業系統來cache 資料檔案依賴於作業系統的cache。innodb不管是索引還是資料,...