MySQL儲存引擎

2022-05-10 21:13:30 字數 2585 閱讀 4798

儲存引擎是什麼?

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

1.innodb

innodb是乙個健壯的事務性儲存引擎,有行級鎖定和外來鍵約束,適用於以下場合:

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

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

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

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

支援自動增長列auto_increment屬性。

另外,從mysql5.7開始innodb就成為預設的儲存引擎。

2.myisam

myisam表是獨立於作業系統的,這說明可以輕鬆的將其從windows伺服器移植到linux伺服器。每當簡歷乙個myisam引擎的表時,就會建立三個檔案,檔名是表名,三個檔案如下:

myisam引擎不支援事務操作(當然,可以在service層根據自己的業務需求進行相應的控制),myisqm儲存引擎適合在以下情況使用:

選擇密集型的表。myisam儲存引擎在篩選大量資料時非常迅速,這是它最突出的優點

插入密集型的表。myisam的兵法插入特性允許同時選擇和插入書資料。

3.mrg_myisam

mrg_myisam儲存引擎是一組myisam表的組合,也就是說它將myisam引擎的多個表聚合起來,但是它內部沒有資料,真正的資料依然在myisam引擎的表中。

例如:同一種類的資料根據時間分為多張表儲存,這時查詢就會比較麻煩,mrg_myisam引擎可以直接將多個表聚合成乙個表統一查詢。

4.memory

memory儲存引擎的出發點是速度。為了得到最快的響應時間,採用的儲存介質是系統記憶體。雖然在記憶體中儲存表資料回提供很高的效能,但當mysqld守護程序崩潰時,所有的memory資料都會丟失。另外,它要求儲存在資料表中的資料使用的是長度不變的格式,這意味著不能使用blob和text這樣的長度可變的資料型別,varchar是一種長度可變的型別,但因為它在mysql內部當作長度固定不變的char型別,所以可以使用。

使用mymory儲存引擎的場景:

目標資料較小,而且被經常頻繁的訪問。在記憶體中存放資料,過太大的資料可能造成記憶體溢位,可以通過引數max_heap_table_size控制memory表的大小,限制表的最大大小。

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

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

5.csv

csv儲存引擎是csv格式檔案儲存資料。

因為csv檔案可以被office等軟體直接編輯,可能會出現不規則的情況,若出現csv檔案中內容損壞的情況,可以使用check table或repair table名零零檢查和修復。

6.archive

archive是歸檔的意思,僅僅支援插入和查詢兩種操作,在mysql5.5以後支援索引功能,有很好的壓縮機制,在記錄請求時進行實時壓縮,所以經常被當作倉庫來使用。適合儲存大量的獨立的作為歷史紀錄的資料,擁有很高的插入速度但是對查詢的支援比較差。

7.blackhole

黑洞儲存引擎,所有插入的資料不會儲存,boackhole引擎表永遠保持為空。伺服器會記錄下blackhole表的日誌,所以可以用於複製資料到備份資料庫。

8.performance_schema

主要用於收集資料庫伺服器的效能引數。mysql使用者不能建立儲存引擎為performance_schema的表。

他提供了以下的功能:

9.其他

當然還有其它一些儲存引擎,如federated、oqgraph、sphinxse、tokudb、cassandra、connect、squence等。

不同的儲存引擎有各自的特點,根據實際情況選擇合適的儲存引擎,其對比如下圖所示:

檢視支援的儲存引擎:

show engines;

show engines\g;

檢視mysql儲存引擎系統變數:

修改資料庫引擎:

方式一:

修改配置檔案my.ini,在[mysqld]後面新增default-storage-engine=innodb,重啟服務,將資料庫預設引擎修改為innodb。

方式二:

在建表是指定儲存引擎:

指定test表的儲存引擎為myisam。

方式三:

建表後更改:

更改該錶的儲存引擎為innodb。

檢視表使用的儲存引擎:

該如何選擇合適的儲存引擎呢?提供以下幾個選擇的標準,實際情況靈活選擇:

是否需要支援事務

是否需要使用熱備

崩潰恢復,能否接收崩潰

是否需要外來鍵支援

儲存的限制

對索引和快取的支援

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

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

mysql個儲存引擎 MySQL儲存引擎

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

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

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