2 MySQL常見資料庫引擎及比較?

2022-03-17 07:51:03 字數 4100 閱讀 2578

mysql儲存引擎簡介

mysql支援數個儲存引擎作為對不同表的型別的處理器。mysql儲存引擎包括處理事務安全表的引擎和處理非事務安全表的引擎

myisam管理非事務表。它提供高速儲存和檢索,以及全文搜尋能力。myisam在所有mysql配置裡被支援,它是預設的儲存引擎,除非你配置mysql預設使用另外乙個引擎。

memory儲存引擎提供「記憶體中」表。merge儲存引擎允許集合將被處理同樣的myisam表作為乙個單獨的表。就像myisam一樣,memory和merge儲存引擎處理非事務表,這兩個引擎也都被預設包含在mysql中。

注:memory儲存引擎正式地被確定為heap引擎。

innodb和bdb儲存引擎提供事務安全表。bdb被包含在為支援它的作業系統發布的mysql-max二進位制分發版裡。innodb也預設被包括在所 有mysql 5.1二進位制分發版裡,你可以按照喜好通過配置mysql來允許或禁止任一引擎。

example儲存引擎是乙個「存根」引擎,它不做什麼。你可以用這個引擎建立表,但沒有資料被儲存於其中或從其中檢索。這個引擎的目的是服務,在 mysql源**中的乙個例子,它演示說明如何開始編寫新儲存引擎。同樣,它的主要興趣是對開發者。

ndb cluster是被mysql cluster用來實現分割到多台計算機上的表的儲存引擎。它在mysql-max 5.1二進位制分發版裡提供。這個儲存引擎當前只被linux, solaris, 和mac os x 支援。在未來的mysql分發版中,我們想要新增其它平台對這個引擎的支援,包括windows。

archive儲存引擎被用來無索引地,非常小地覆蓋儲存的大量資料。

csv儲存引擎把資料以逗號分隔的格式儲存在文字檔案中。

blackhole儲存引擎接受但不儲存資料,並且檢索總是返回乙個空集。

federated儲存引擎把資料存在遠端資料庫中。在mysql 5.1中,它只和mysql一起工作,使用mysql c client api。在未來的分發版中,我們想要讓它使用其它驅動器或客戶端連線方法連線到另外的資料來源。

如何選擇最適合你的儲存引擎呢?

myisam:預設的mysql外掛程式式儲存引擎,它是在web、資料倉儲和其他應用環境下最常使用的儲存引擎之一。注意,通過更改storage_engine配置變數,能夠方便地更改mysql伺服器的預設儲存引擎。

innodb:用於事務處理應用程式,具有眾多特性,包括acid事務支援。(提供行級鎖)

bdb:可替代innodb的事務引擎,支援commit、rollback和其他事務特性。

memory:將所有資料儲存在ram中,在需要快速查詢引用和其他類似資料的環境下,可提供極快的訪問。

merge:允許mysql dba或開發人員將一系列等同的myisam表以邏輯方式組合在一起,並作為1個物件引用它們。對於諸如資料倉儲等vldb環境十分適合。

archive:為大量很少引用的歷史、歸檔、或安全審計資訊的儲存和檢索提供了完美的解決方案。

federated:能夠將多個分離的mysql伺服器鏈結起來,從多個物理伺服器建立乙個邏輯資料庫。十分適合於分布式環境或資料集市環境。

cluster/ndb:mysql的簇式資料庫引擎,尤其適合於具有高效能查詢要求的應用程式,這類查詢需求還要求具有最高的正常工作時間和可用性。

other:

mysql儲存引擎比較

myisam

myisam是mysql的預設儲存引擎。myisam不支援事務、也不支援外來鍵,但其訪問(讀)速度快,對事務完整性沒有要求。 

myisam除了提供isam裡所沒有的索引和字段管理的大量功能,myisam還使用一種**鎖定的機制,來優化多個併發的讀寫操作,其代價是你需要經常執行optimize table命令,來恢復被更新機制所浪費的空間。myisam還有一些有用的擴充套件,例如用來修復資料庫檔案的myisamchk工具和用來恢復浪費空間的myisampack工具。myisam強調了快速讀取操作,這可能就是為什麼mysql受到了web開發如此青睞的主要原因:在web開發中你所進行的大量資料操作都是讀取操作。所以,大多數虛擬主機提供商和internet平台提供商只允許使用myisam格式。myisam格式的乙個重要缺陷就是不能在表損壞後恢復資料。

innodb儲存引擎提供了具有提交、回滾和崩潰恢復能力的事務安全。但是比起myisam儲存引擎,innodb寫的處理效率差一些並且會占用更多的磁碟空間以保留資料和索引。

memory/heap

memory(又叫heap)儲存引擎使用存在記憶體中的內容來建立表。每個memory表只實際對應乙個磁碟檔案。memory型別的表訪問非常得快,因為它的資料是放在記憶體中的,並且預設使用hash索引。但是一旦服務關閉,表中的資料就會丟失掉。 heap允許只駐留在記憶體裡的臨時**。駐留在記憶體裡讓heap要比isam和myisam都快,但是它所管理的資料是不穩定的,而且如果在關機之前沒有進行儲存,那麼所有的資料都會丟失。在資料行被刪除的時候,heap也不會浪費大量的空間。heap**在你需要使用select表示式來選擇和操控資料的時候非常有用。

memory主要用於那些內容變化不頻繁的**表,或者作為統計操作的中間結果表,便於高效地堆中間結果進行分析並得到最終的統計結果。

merge

merge儲存引擎是一組myisam表的組合,這些myisam表必須結構完全相同。merge表本身沒有資料,對merge型別的表進行查詢、更新、刪除的操作,就是對內部的myisam表進行的。 merge用於將一系列等同的myisam表以邏輯方式組合在一起,並作為乙個物件引用它。merge表的優點在於可以突破對單個myisam表大小的限制,通過將不同的表分布在多個磁碟上,可以有效的改善merge表的訪問效率。

myisam與innodb的區別

innodb和myisam是許多人在使用mysql時最常用的兩個表型別,這兩個表型別各有優劣,視具體應用而定。基本的差別為:myisam型別不支援事務處理等高階處理,而innodb型別支援。myisam型別的表強調的是效能,其執行數度比innodb型別更快,但是不提供事務支援,而innodb提供事務支援已經外部鍵等高階資料庫功能。

myisam表還支援3中不同的儲存格式:靜態表動態表壓縮表

靜態表是預設的儲存格式,靜態表中的字段都是非變長的字段,優點是:儲存非常迅速容易快取,出現故障容易恢復缺點是:占用的空間通常比動態表多。(注意: 在儲存時,列的寬度不足時,用空格補足,當時在訪問的時候並不會得到這些空格) 

動態表的字段是變長的,優點是:占用的空間相對較少,但是頻繁地更新刪除記錄會產生碎片,需要定期改善效能,並且出現故障的時候恢復相對比較困難。 

壓縮表占用磁碟空間小,每個記錄是被單獨壓縮的,所以只有非常小的訪問開支。 

innodb儲存方式為兩種:使用共享表空間儲存 、使用多表空間

mysql引擎 c MySQL常見資料庫引擎及比較

innodb 支援事務處理,支援外來鍵,支援崩潰修復能力和併發控制。如果需要對事務的完整性要求比較高 比如銀行 要求實現併發控制 比如售票 那選擇innodb有很大的優勢。如果需要頻繁的更新 刪除操作的資料庫,也可以選擇innodb,因為支援事務的提交 commit 和回滾 rollback myi...

常見資料庫引擎比較

面試官經常問到有關資料庫的問題,多數可能就是基於mysql資料庫的這幾種引擎。簡介概括主要 1.總結 一般來說不使用事務的話,請使用myisam引擎,使用事務的話,一般使用innodb。2.比較常用的資料庫引擎3種 優點 占用的空間小,儲存的速度快 缺點 不支援事務和併發 使用場景 資料表主要做修改...

常見資料庫比較

一 開放性1.sql server 只能在windows上執行,沒有絲毫的開放性,作業系統的系統的穩定對資料庫是十分重要的。windows9x系列產品是偏重於桌面應用,nt server只適合中小型企業。而且windows平台的可靠性,安全性和伸縮性是非常有限的。它不象unix那樣久經考驗,尤其是在...