MySQL儲存引擎

2022-07-04 08:54:10 字數 1957 閱讀 9773

在mysql中,不需要在整個伺服器中使用同一種儲存引擎,針對具體的要求,可以對每乙個表使用不同的儲存引擎。

一、myisam

1. 不支援事務,也不支援外來鍵,但訪問速度快,對事務完整性沒有要求或者以select、insert為主的應用基本都可以使用這個引擎來建立表。

2. 使用myisam引擎建立資料庫表,將產生3個檔案。其中檔名和表名都相同,副檔名分別為:

.frm(儲存表定義)、.myd(mydata,儲存資料)、.myi(myindex,儲存索引),如下圖所示:表t4一共有三個檔案

node:資料檔案和索引檔案放在不同目錄,以平均分配io,獲取更快的速度。

3. myisam引擎使用b+tree作為索引結構,葉節點的data域存放的是資料記錄的位址。

二、innodb(mysql預設的儲存引擎)

innodb是乙個健壯的事務型儲存引擎,支援行級鎖定和外來鍵約束

在以下場合下,使用innodb是最理想的選擇:

1.更新密集的表。innodb儲存引擎特別適合處理多重併發的更新請求。

2.事務。innodb儲存引擎是支援事務的標準mysql儲存引擎。

3.自動災難恢復。與其它儲存引擎不同,innodb表能夠自動從災難中恢復。

4.外來鍵約束。mysql支援外來鍵的儲存引擎只有innodb。

5.支援自動增加列auto_increment屬性。

一般來說,如果需要事務支援,並且有較高的併發讀取頻率,innodb是不錯的選擇。

innodb 和 myisam之間的區別:

1>.innodb支援事物,而myisam不支援事物

2>.innodb支援外來鍵,而myisam不支援

3>.innodb支援行級鎖,而myisam支援表級鎖

4>.innodb支援mvcc, 而myisam不支援

5>.innodb不支援全文索引,而myisam支援。

6>.innodb和myisam索引區別

雖然innodb也使用b+tree作為索引結構,但具體實現方式卻與myisam截然不同。

1). innodb的資料檔案本身就是索引檔案。

2). innodb的輔助索引data域儲存相應記錄主鍵的值而不是位址

三、memory

memory儲存引擎的出發點是速度(memory儲存引擎將表中的資料儲存到系統記憶體中)

一般在以下幾種情況下使用memory儲存引擎:

1.目標資料較小,而且被非常頻繁地訪問。在記憶體中存放資料,所以會造成記憶體的使用,可以通過引數max_heap_table_size控制memory表的大小,設定此引數,就可以限制memory表的最大大小。

2.如果資料是臨時的,而且要求必須立即可用,那麼就可以存放在記憶體表中。

3.儲存在memory表中的資料如果突然丟失,不會對應用服務產生實質的負面影響。

memory同時支援雜湊索引和b樹索引。

儲存在記憶體中帶來的問題

1. 當mysqld守護程序崩潰時,所有的memory資料都會丟失。

2. 因為儲存在記憶體中,所以要求儲存在memory資料表裡的資料使用的是長度不變的格式,這意味著不能使用blob和text這樣的長度可變的資料型別,varchar是一種長度可變的型別,但因為它在mysql內部當做長度固定不變的char型別,所以可以使用。

四、archive

archive是歸檔的意思,在歸檔之後很多的高階功能就不再支援了,僅僅支援最基本的插入和查詢兩種功能。

在mysql 5.5版以前,archive是不支援索引,但是在mysql 5.5以後的版本中就開始支援索引了。archive擁有很好的壓縮機制,它使用zlib壓縮庫,在記錄被請求時會實時壓縮,所以它經常被用來當做倉庫使用。

五、merge(mysql5.0中名為:mrg_myisam)

merge儲存引擎是一組myisam表的組合

參考:

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

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

mysql個儲存引擎 MySQL儲存引擎

mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 儲存引擎 其實就是指定表如何儲存資料,如何為儲存的資料建立索引以及如何更新 查詢資料等技術實現的方法...

mysql儲存引擎模式 mysql儲存引擎

mysql資料庫的體系架構如下圖所示 從上圖中可以看出,mysql主要分為以下幾個元件 連線池元件 管理服務和工具元件 sql介面元件 分析器元件 優化器元件 緩衝元件 外掛程式式儲存引擎 物理檔案 一 儲存引擎 儲存引擎 其實就是指定 表 如何儲存資料,如何為儲存的資料 建立索引以及 如何更新,查...