程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 什麼是存儲引擎以及不同存儲引擎特點,存儲引擎特點

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

編輯:MySQL綜合教程

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


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

  

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

  MySQL服務器采用了多層設計和獨立模塊,插件式存儲引擎體系結構,允許將存儲引擎加載到正在運新的MySQL服務器中,圖中的Pluggable Storage Engines部分。采用MySQL服務器體系結構,由於在存儲級別上(也就是Pluggable Storage Engines)提供了一致和簡單的應用模型和API,應用程序編程人員和DBA可不再考慮所有的底層實施細節。因此,盡管不同的存儲引擎具有不同的能力,應用程序是與之分離的。存儲引擎就司職與文件系統打交道了。

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

  • 並發性:某些應用程序比其他應用程序具有很多的顆粒級鎖定要求(如行級鎖定)。
  • 事務支持:並非所有的應用程序都需要事務,但對的確需要事務的應用程序來說,有著定義良好的需求,如ACID兼容等。
  • 引用完整性:通過DDL定義的 外鍵,服務器需要強制保持關聯數據庫的引用完整性。
  • 物理存儲:它包括各種各樣的事項,從表和索引的總的頁大小,到存儲數據所需的格式,到物理磁盤。
  • 索引支持:不同的應用程序傾向於采用不同的索引策略,每種存儲引擎通常有自己的編制索引方法,但某些索引方法(如B-tree索引)對幾乎所有的存儲引擎來說是共同的。
  • 內存高速緩沖:與其他應用程序相比,不同的應用程序對某些內存高速緩沖策略的響應更好,因此,盡管某些內存高速緩沖對所有存儲引擎來說是共同的(如用於用戶連接的高速緩沖,MySQL的高速查詢高速緩沖等),其他高速緩沖策略僅當使用特殊的存儲引擎時才唯一定義。
  • 性能幫助:包括針對並行操作的多I/O線程,線程並發性,數據庫檢查點,成批插入處理等。
  • 其他目標特性:可能包括對地理空間操作的支持,對特定數據處理操作的安全限制等。

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

 

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

 

  

  

  

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved