什麼是儲存引擎以及不同儲存引擎特點

2022-08-05 11:18:14 字數 800 閱讀 7697

以前一直玩oracle資料庫,整天圍著業務需求和執行計劃轉,剛剛接觸mysql看到儲存引擎不慎理解,相應會有與我相同人群存在,所以寫文以記之。

首先簡單從字面理解,想當是與磁碟打交道的,實際情況也是如此。一個資料庫系統可以隨意切換不同的儲存引擎,也就是說隨意選擇寫磁碟或操作磁碟的方式,覺得還是很牛掰的,所以這裡看下mysql的體系結構。

mysql伺服器採用了多層設計和獨立模組,外掛式儲存引擎體系結構,允許將儲存引擎載入到正在運新的mysql伺服器中,圖中的pluggable storage engines部分。採用mysql伺服器體系結構,由於在儲存級別上(也就是pluggable storage engines)提供了一致和簡單的應用模型和api,應用程式程式設計人員和dba可不再考慮所有的底層實施細節。因此,儘管不同的儲存引擎具有不同的能力,應用程式是與之分離的。儲存引擎就司職與檔案系統打交道了。

到這裡對與儲存引擎的定位以及功能應該是基本瞭解的,接下來的疑問就是,有沒有必要。很有必要的,因為一下羅列的內容是儲存引擎處理的事情:

以上要求會在不同的需求中予以體現,通過單獨一個系統實現是不可能的,以上特點有些本身就是相互矛盾的,魚和熊掌的問題。對以上內容做些選擇,形成的儲存引擎就是一個外掛引擎了,某些特定的需求可以使用。如下圖,部分現有的儲存引擎以及基本特點:

至此,應該對儲存引擎有一個直觀的印象了。對了,還有一點需要格外注意的: mysql中不同的表可以指定不同的儲存引擎,也就是說一套mysql伺服器可以同時使用n種不同的儲存引擎,甚至自己寫一個。