MySQL表儲存引擎

2021-08-22 00:09:52 字數 2461 閱讀 8377

常用的4種儲存引擎:

myisam、innodb、memory和merge。

myisam是mysql5.5版本之前的預設儲存引擎。myisam不支援事務、也不支援外來鍵,其優勢是訪問的速度快,對事務完整性沒有要求或者以select、insert為主的應用基本上都可以使用這個引擎來建立表。

資料儲存形式

myisam採用的是索引與資料分離的形式,將資料儲存在三個檔案中.frm.myd,.myi。譬如如下表

事務

myisam不支援事務。 

優點

1.高效能讀取;
2.因為它儲存了表的行數,當使用count統計時不會掃瞄全表;

缺點

1、鎖級別為表鎖,表鎖優點是開銷小,加鎖快;缺點是鎖粒度大,發生鎖衝動概率較高,容納併發能力低,這個引擎適合查詢為主的業務。

2、此引擎不支援事務,也不支援外來鍵。

3、insert和update操作需要鎖定整個表;

4、它儲存表的行數,於是select count(*) from table時只需要直接讀取已經儲存好的值而不需要進行全表掃瞄。

適用場景

(1)做很多count 的計算;(2)插入不頻繁,查詢非常頻繁;(3)沒有事務。

innodb儲存引擎提供了具有提交回滾和崩潰恢復能力的事務安全。但是對比myisam的儲存引擎,innodb寫的處理效率差一些並且會占用更多的磁碟空間以保留資料和索引。

mysql key的作用,建立索引

key tid (tid)                         # 是單列索引(鍵)。 

例如對上面建立的兩個表,子表的外來鍵指定是on delete restrict on update cascade方式的,那麼在主表刪除記錄的時候,如果子表有對應記錄,則不允許刪除,主表在更新記錄的時候,如果子表有對應記錄,則子表對應更新:

innodb儲存引擎的表使用過程中不同於其他儲存引擎的特點

(1)自動增長列

(2)外來鍵約束

(3)儲存方式

儲存方式

使用innodb時,會將資料表分為.frm 檔案進行儲存。

事務

innodb是典型的事務型儲存引擎,支援回滾,並且通過一些機制和工具,支援真正的熱備份,設計目標是處理大數量資料時提供高效能的服務,它在執行時會在記憶體中建立緩衝池,用於緩衝資料和索引。

innodb預設情況下的事務是開啟的(set autocommit = 0)就是說每插入一條記錄時候,innodb型別的表都會把它當作乙個單獨的事務來處理.

適用場景

(1)可靠性要求比較高,或者要求事務;(2)表更新和查詢都相當的頻繁,並且表鎖定的機會比較大的情況。
在選擇儲存引擎時,應根據應用特點擊擇合適的儲存引擎,對於複雜的應用系統可以根據實際情況選擇多種儲存引擎進行組合。

下面是常用儲存引擎的適用環境。

myisam:預設的mysql外掛程式式儲存引擎。

如果應用是以讀操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不是很高,

那麼選擇這個儲存引擎是非常適合的。myisam是在web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。

innodb:用於事務處理應用程式,支援外來鍵。如果應用對事務的完整性有比較高的要求,在併發條件下要求資料的一致性,資料操作除了插入和查詢以外,還包括很多的更新、刪除操作,那麼innodb儲存引擎應該是比較合適的選擇。innodb

儲存引擎除了有效地降低由於刪除和更新導致的鎖定,還可以確保事務的完整ᨀ交(commit)和回滾(rollback),對於類似計費系統或者財務系統等對資料準確性要求比較高的系統,innodb都是合適的選擇。

memory:將所有資料儲存在ram中,在需要快速定位記錄和其他類似資料的環境下,可ᨀ供極快的訪問。memory的缺陷是對錶的大小有限制,太大的表無法cache在記憶體中,其次是要確保表的資料可以恢復,資料庫異常終止後表中的資料是可以恢復的。memory表通常用於更新不太頻繁的小表,用以快速得到訪問結果。

merge:用於將一系列等同的myisam表以邏輯方式組合在一起,並作為乙個物件引用它們。merge表的優點在於可以突破對單個myisam表大小的限制,並且通過將不同的表分布在多個磁碟上,可以有效地改善merge表的訪問效率。這對於諸如資料倉儲等vldb環境十分適合。

MYSQL 儲存引擎(表型別)

外掛程式式儲存引擎是 mysql 資料庫最重要的特性之一,使用者可以根據應用的需要選擇如 何儲存和索引資料 是否使用事務等。mysql 預設支援多種儲存引擎,以適用於不同領域 的資料庫應用需要,使用者可以通過選擇使用不同的儲存引擎提高應用的效率,提供靈活的存 儲,使用者甚至可以按照自己的需要定製和使...

mysql儲存引擎靜態表 mysql儲存引擎

儲存引擎是mysql資料庫最重要的特性之一,使用者可以根據自身需求選擇合適的儲存引擎,例如 是否支援事務 批量插入速度 行級鎖或者表級鎖等相關特性。mysql預設支援很多種不同的儲存引擎,使用者在建立表的時候根據表的作用可以指定不同的儲存引擎。在mysql5.5之前預設儲存引擎都是myisam,5....

mysql儲存引擎 mysql儲存引擎簡介

精品推薦 什麼是儲存引擎 mysql儲存引擎是資料庫如何儲存資料 怎樣建立索引以及如何查詢更新資料等技術的實現方法,資料通過使用不同的技術儲存在檔案中,使用不同的儲存機制 索引方式來提供不同的功能。在mysql這種關係型資料中心來說,資料是以表的方式來儲存的,因此,簡單點來說,儲存引擎就是儲存和操作...