好程式設計師大資料培訓分享MySQL資料庫儲存引擎簡介

好程式設計師發表於2020-05-27

  好程式設計師大資料培訓分享《MySQL 資料庫》儲存引擎簡介, 1 、簡介 MySQL 中的資料用各種不同的技術儲存在檔案 ( 或者記憶體 ) 中。每一種技術都使用不同的儲存機制、索引技巧、鎖定水平並且最終提供廣泛的不同的功能和能力。

   透過選擇不同的技術,你能夠獲得額外的速度或者功能,從而改善你的應用的整體功能。例如,如果你在研究大量的臨時資料,你也許只需要將資料儲存在記憶體中而不是檔案中( 記憶體儲存引擎能夠在記憶體中儲存所有的表格資料 ) 。又或者,你也許需要一個支援事務處理的資料庫 ( 以確保事務處理不成功時資料的回退能力 )

   這些不同的技術以及配套的相關功能在 MySQL 中被稱作儲存引擎 ( 也稱作表型別 )

2.儲存引擎的分類

MySQL預設配置了許多不同的儲存引擎,可以預先設定或者在MySQL伺服器中啟用,我們可以根據對資料處理的需求,選擇不同的儲存引擎,從而最大限度的利用MySQL強大的功能。

在客戶端使用相關命令顯示所有儲存引擎:show engines;

這裡介紹一下常用的儲存引擎

1)innoDB

InnoDB是一個健壯的事務型儲存引擎,這種儲存引擎已經被很多網際網路公司使用,為使用者操作非常大的資料儲存提供了一個強大的解決方案。InnoDB就是作為預設的儲存引擎。InnoDB還引入了行級鎖定和外來鍵約束。

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

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

2.事務。InnoDB儲存引擎是支援事務的標準MySQL儲存引擎。

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

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

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

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

2)MyISAM

MyISAM不支援事務,也不支援外來鍵,尤其是訪問速度快,對事務完整性沒有要求或者以SELECT、INSERT為主的應用基本都可以使用這個引擎來建立表。每個MyISAM在磁碟上儲存成3個檔案,其中檔名和表名都相同,但是副檔名分別為:

.frm(儲存表定義)

.MYD(MYData,儲存資料)

.MYI(MYIndex,儲存索引)

3)MEMORY

使用Memory儲存引擎的出發點是速度。為得到最快的響應時間,採用的邏輯儲存介質是系統記憶體。雖然在記憶體中儲存表資料確實會提供很高的效能,但當mysqld守護程式崩潰時,所有的Memory資料都會丟失。獲得速度的同時也帶來了一些缺陷。它要求儲存在Memory資料表裡的資料使用的是長度不變的格式,這意味著不能使用BLOB和TEXT這樣的長度可變的資料型別,VARCHAR是一種長度可變的型別,但因為它在MySQL內部當做長度固定不變的CHAR型別,所以可以使用。

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

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

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

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

3.如何選擇合適的儲存引擎?

可以按照下列判斷來選擇

1)是否需要支援事務;

2)是否需要使用熱備;

3)崩潰恢復:能否接受崩潰;

4)是否需要外來鍵支援;

然後按照標準,選擇對應的儲存引擎即可。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69913864/viewspace-2694629/,如需轉載,請註明出處,否則將追究法律責任。

相關文章