MySql儲存引擎

2021-08-29 14:04:40 字數 2069 閱讀 3870

innodb給mysql的表提供了事務、回滾、崩潰修復能力和多版本併發控制的事務安全。

innodb儲存引擎支援自動增長auto_increment。自動增長列的值不能為空,且只必須唯一,且自動增長的列為主鍵。在插入值時,如果自動增長列不插入值或輸入的值為0或輸入的值為null,則插入的值為自動增長後的值。主鍵唯一,因此自動增長的列不能插入已經存在的值。自動增長從1開始遞增,即第乙個值為1.

innodb支援外來鍵(foreign key)。外來鍵所在的表為子表,外來鍵所依賴的表為父表。父表中被子表外來鍵關聯的字段必須為主鍵。當刪除、更新父表的某條資訊時,子表需要做相應的級聯操作。

innodb中,建立的表的表結構儲存在.frm檔案中。資料和索引儲存在innodb_data_home_dir和innodb_file_path定義的表空間中。

innodb引擎的優勢在於提供了良好的事務管理、崩潰修復能力和併發控制。缺點是讀寫效率稍差,占用的資料空間相對比較大。

曾是mysql的預設儲存引擎,基於isam儲存引擎發展起來的。myisam儲存引擎的表儲存成3個檔案。檔案的名字與表名相同。副檔名包括frm,myd(mydata的縮寫)和myi(myindex的縮寫)。以frm為副檔名的檔案儲存表的結構;以myd為副檔名的檔案儲存資料;以myi為副檔名的檔案儲存索引。

基於myisam的表支援3種不同的儲存格式。包括靜態型、動態型和壓縮型;其中靜態型為預設儲存格式,其字段是固定長度的;動態型包含變長字段,記錄長度是不固定的;壓縮型需要使用myisqmpack工具建立,占用的磁碟空間比較小。

myisam儲存引擎的優勢在於占用空間小,處理速度快。缺點是不支援事物的完整性和併發性。

使用儲存在記憶體中的內容來建立表,而且所有資料也放在記憶體中。

每個基於memory儲存引擎的表實際對應乙個磁碟檔案。該檔案的檔名與表名相同,型別為frm型別,該檔案中只儲存表的結構。而其資料檔案,都是儲存在記憶體中的。這樣有利於對資料的快速處理,提高整個表的處理效率。值得注意的是,伺服器需要有足夠的記憶體來維持memory儲存引擎的使用。如果不需要使用了,可以釋放這些記憶體,甚至刪除不需要的表。

memory儲存引擎預設使用雜湊(hash)索引。其速度比btree索引快。

memory的表的大小是受限制的。表的大小主要取決於兩個引數,分別是max_rows和max_heap_table_size。其中,max_rows可以在建立表時指定;max_heap_table_size預設為16mb,可以按需要進行擴大。由於其存在記憶體中,表的處理速度非常快。但是,資料易失,生命周期短。

儲存引擎的對比 特性

innodb

myisam

memory

事務安全支援無

無儲存限制

64tb有有

空間使用高低

低記憶體使用高低

高插入資料的速度低高

高對外鍵的支援支援無

1、innodb儲存引擎:innodb儲存引擎支援事務處理,支援外來鍵。同時支援崩潰修復能力和併發控制。如果需要對事務的完整性要求比較高,要求實現併發控制,那選擇innodb儲存引擎有很大優勢。如果需要頻繁的進行更新、刪除操作的資料庫,也可以選擇innodb儲存引擎。innodb儲存引擎還可以實現事務的提交和回滾。

2、myisam儲存引擎:myisam儲存引擎的插入資料快,空間和記憶體使用比較低。如果表主要是用於插入新紀錄和讀出記錄,那麼選擇myisam儲存引擎能實現處理的高效率。如果應用的完整性、併發性要求很低,也可以選擇myisam儲存引擎。

3、memory儲存引擎:memory儲存引擎的所有資料都在記憶體中,資料的處理速度快,但安全性不高。如果需要很快的讀寫速度,對資料的安全性要求比較低,可以選擇memory儲存引擎。memory儲存引擎對錶的大小有要求,不能建立太大的表。適用於相對較小的資料庫表。

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

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

mysql個儲存引擎 MySQL儲存引擎

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

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

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