Mysql儲存引擎總結

2021-10-19 13:27:56 字數 1330 閱讀 2059

mysql中的資料用各種不同的技術儲存在檔案(或者記憶體)中。這些技術中的每一種技術都使用不同的儲存機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。通過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。這些不同的技術以及配套的相關功能在mysql中被稱作儲存引擎(也稱作表型別)

show engines來看一下mysql支援哪些儲存引擎

在mysql5.5版本之後,使用innodb作為預設引擎,它支援事務,行級鎖和外來鍵。mysql中的儲存引擎是針對表的,可以對不同的表使用不同的儲存引擎。

在分析儲存引擎之前,先看一下鎖

鎖的分類     

①從對資料操作的型別(讀\寫)分為:

②從對資料操作的粒度分為:      

innodb是一種事物儲存引擎,完全支援事物的acid特性,它是使用日誌來保證事物的,也就是redo log(重做日誌) 和undo log(回滾日誌)。

redo log主要儲存已經提交的事務,而undo log主要儲存還未提交的事務。

如果應用是以查詢操作和插入操作為主,只有很少的更新和刪除操作,並且對事務的完整性、併發性要求不是很高,那麼選擇這個儲存引擎是非常合適的。

myisam儲存引擎mysql會建立3個檔案:

myisam支援對任意意外關閉所損壞的表的檢查和修復,這裡的修復並不是通過事物來修復的,因為myisam不支援事物,有可能造成資料的丟失

將資料存在記憶體,為了提高資料的訪問速度,每乙個表實際上和乙個磁碟檔案關聯。檔案是frm

支援的資料型別有限制,比如:不支援text和blob型別,對於字串型別的資料,只支援固定長度的行,varchar會被自動儲存為char型別;

支援的鎖粒度為表級鎖。所以,在訪問量比較大時,表級鎖會成為memory儲存引擎的瓶頸;

由於資料是存放在記憶體中,一旦伺服器出現故障,資料都會丟失;

查詢的時候,如果有用到臨時表,而且臨時表中有blob,text型別的字段,那麼這個臨時表就會轉化為myisam型別的表,效能會急劇降低;

預設使用hash索引。

如果乙個內部表很大,會轉化為磁碟表。

mysql引擎總結 MySQL儲存引擎總結

儲存引擎 儲存引擎其實就是如何實現儲存資料,如何為儲存的資料建立索引以及如何更新,查詢資料等技術實現的方法。儲存引擎的選擇 1 是否需要支援事務 2 是否需要使用熱備 3 崩潰恢復 能否接受崩潰 4 是否需要外來鍵支援 myisam 1 每當建立乙個myisam引擎的表時,就會在本地磁碟上建立三個檔...

MySQL儲存引擎總結

儲存引擎 儲存引擎其實就是如何實現儲存資料,如何為儲存的資料建立索引以及如何更新,查詢資料等技術實現的方法。儲存引擎的選擇 1 是否需要支援事務 2 是否需要使用熱備 3 崩潰恢復 能否接受崩潰 4 是否需要外來鍵支援 myisam 1 每當建立乙個myisam引擎的表時,就會在本地磁碟上建立三個檔...

MySQL儲存引擎總結

前言 在資料庫中存的就是一張張有著千絲萬縷關係的表,所以表設計的好壞,將直接影響著整個資料庫。而在設計表的時候,我們都會關注乙個問題,使用什麼儲存引擎。等一下,儲存引擎?什麼是儲存引擎?什麼是儲存引擎?關聯式資料庫表是用於儲存和組織資訊的資料結構,可以將表理解為由行和列組成的 類似於excel的電子...