MariaDB 和 MySQL 有何區別?

MySQL 和 MariaDB 都是開放原始碼資料庫技術。您可以使用它們以包含列和欄的資料表格式儲存資料。MySQL 是最廣泛採用的開放原始碼資料庫。它是許多熱門網站、應用程式和商業產品的主要關聯式資料庫。MariaDB 是 MySQL 的修改版本。MariaDB 是由 MySQL 原始開發團隊製作的,原因是 MySQL 被 Oracle Corporation 收購後產生的授權和分發問題。自收購以來,MySQL 和 MariaDB 的發展方式有所不同。但是,MariaDB 採用 MySQL 的資料和資料表定義檔案,還使用相同的用戶端協定、用戶端 API、連接埠和通訊端。這是為了讓 MySQL 使用者輕鬆切換到 MariaDB。

閱讀有關 MySQL 的內容 »

MariaDB 與 MySQL 之間有什麼相似之處?

MySQL 是 1995 年發佈的一個關聯式資料庫管理系統。2009 年,開發人員發佈了 MariaDB 作為 MySQL 5.1.38 的程式碼分支。

由於 MariaDB 是 MySQL 的分支,這兩種關聯式資料庫管理系統有許多相似之處。例如,MariaDB 一直保留 MySQL 的結構、命名慣例和資料定義文件。此外,它還支援所有 MySQL 連接器、連線和連接埠。MySQL 用戶端套件的運作方式與 MariaDB 一樣。

接下來,我們來介紹更多相似之處。

ACID 合規

原子性、一致性、隔離性和耐久性 (ACID) 是確保資料庫交易可靠性的四項核心原則。MySQL 和 MariaDB 都堅持這些原則。透過遵守 ACID,兩種資料庫都能保持資料的準確性和完整性。

SQL 相容性

MySQL 和 MariaDB 是將資料整理到資料表中的關聯式資料庫。MariaDB 和 MySQL 都使用 SQL 來管理和查詢資料。您可以在這些系統中使用許多相同的命令。

閱讀有關 SQL 的內容 »

MySQL 和 MariaDB 使用 SQL 介面以關聯式資料表存放資料。

開放原始碼軟體

做為開放原始碼關聯式資料庫管理系統,MySQL 和 MariaDB 都是開發人員社群合作努力的成果。他們的開放原始碼可供公眾使用。

MySQL 資料庫有一個完全的開放原始碼版本,依據通用公共授權 (GPL) 發佈。此外,它還發佈了一個付費企業版,具有其他功能和支援。MariaDB 是 GitHub 上的完全開放原始碼版本。

安全性

MySQL 和 MariaDB 提供類似的基本安全功能。它們提供加密、存取控制機制,使用者身分驗證和授權,以及 SSL/TLS 支援。此外,它們還允許精細的存取控制,因此您可以向不同的使用者提供不同的許可級別。

主要差異:MariaDB 與MySQL

自從 MySQL 分支開始,MariaDB 一直在繼續擴展其功能。其中某些變更導致了核心功能、功能和效能方面的差異。

以下是 MySQL 與 MariaDB 之間的顯著差異。

JSON 資料處理

MariaDB 和 MySQL 均支援 JSON 資料的擷取和存放。但是,它們以不同的方式存放 JSON 報告。MariaDB 將 JSON 報告存放在字串中,而 MySQL 則將其以二進位物件存放。

MySQL 和 MariaDB 並非同時支援所有 JSON 函數。MariaDB 支援 JSON_QUERYJSON_EXISTS,而 MySQL 不支援。同樣,MySQL 支援原生 JSON 資料類型 JSON_TABLE,而 MariaDB 不支援。

但是,自 10.2 版開始,MariaDB 僅支援 JSON 資料類型。MariaDB 使用的 JSON 資料類型是 LONGTEXT 的別名。

功能

由於其開發途徑已經不同,MariaDB 和 MySQL 現在提供略微不同的功能。

例如,MySQL 提供動態資料欄,可讓您在單一資料欄中定義多個資料值,並使用函數修改資料欄。動態資料欄允許使用資料遮罩來保護敏感資訊。

相較之下,MariaDB 在資料庫檢視中支援不可見資料欄。當使用者執行 SELECT 陳述式或要求 INSERT 陳述式中的值時,不會列出不可見的資料欄。

使用者身份驗證

MySQL 具有 validate_password 元件,您可以將其用於增加密碼安全性。

MariaDB 預設沒有此元件,但提供三個驗證程式外掛程式。您可以使用這些密碼驗證程式外掛程式,來為密碼新增更多保護。在版本 10.4 中,MariaDB 推出了 ed25519 身分驗證外掛程式,以來取代其之前使用的 SHA-1 身分驗證。這有助於驗證使用者並安全地存放密碼。 

加密

MySQL 和 MariaDB 都提供靜態資料加密和傳輸中資料加密。

MySQL 允許管理員使用者設定和加密重做和復原日誌,而不會加密臨時資料表空間或二進位日誌。

另一方面,MariaDB 支援二進位日誌加密和臨時資料表加密。 

執行緒集區

透過執行緒集區,資料庫可將新連線與預先存在的執行緒配對,藉此來最佳化其資源。針對想要平行擴展和服務數千位使用者的應用程式,高執行緒集區容量至關重要。

MariaDB 在其執行緒集區外掛程式中包括執行緒集區,這是社群版本的一部分。MariaDB 能夠一次管理超過 200,000 個連線。

MySQL 在其企業版本中提供了一個執行緒集區外掛程式。但是,它無法像 MariaDB 一樣處理儘可能多的連線。

何時使用 MariaDB 與MySQL

MariaDB 的可擴展性更高,並且與 MySQL 相比,提供更快的查詢速度。這使其有利於管理大型資料。您還可以在 MariaDB 中找到更多 MySQL 沒有的功能,例如序列儲存引擎和虛擬資料欄。此外,您可以在一個資料表中使用多個引擎。

然而,MySQL 存在的時間比 MariaDB 長。某些組織喜好 MySQL 提供的企業支援。

接下來,我們將說明在兩種資料庫之間做出選擇的一些考量。

儲存引擎

在資料庫管理系統中,儲存引擎是有助於在資料庫內擷取、更新和存放資料的元件。您想要使用的儲存引擎可能會影響您的決定。

您可以在 MySQL 和 MariaDB 上使用多個儲存引擎,但 MySQL 提供的選項較少。MySQL 上的某些儲存引擎包括 InnoDB、CSV、Federated、MyISAM、Merge 和 Federated。

MariaDB 支援某些 MySQL 沒有的儲存引擎,例如 XtraDB、Aria、InnoDB、MariaDB ColumnStore、Memory、Cassandra 和 Connect。

授權

MariaDB 和 MySQL 都具有通用公共授權 (GPL) 版本。MariaDB 完全依據 GPL 授權,而 MySQL 具有兩個可用的授權 – 公有和私有授權。

私有 MySQL 企業版授權可解鎖其他功能,例如執行緒集區,以加快查詢速度。若公司想要分發 MySQL 軟體,而不依據 GPL 分發來源程式碼,可能更喜好 MySQL 企業版。

Oracle 資料庫相容性

Oracle 資料庫相容性是指 Oracle 資料庫能夠與使用 MariaDB 或 MySQL 資料庫建置的應用程式搭配使用。

如果您的組織已經使用 Oracle 資料庫產品,您可能會喜好使用 MySQL。Oracle 資料庫針對 MySQL 特定的 SQL 語法提供特定的相容性模式。但是,MySQL 不支援 PL/SQL,這是 Oracle 開發的面向應用程式的語言。

自 10.3 版本開始,MariaDB 已支援 PL/SQL。此外,MariaDB 還提供了一種 Oracle 語法相容性模式,用於執行 Oracle 資料庫應用程式而無需變更。

速度與效能

多年來,MySQL 在若干使用案例中表現優於 MariaDB。例如,與 MariaDB 10.3 版相比,MySQL 8.0 每秒可處理的查詢更多。但是,近年來,MariaDB 已經做出許多改善。

目前,MariaDB 在執行查詢和複寫任務方面更快。針對效能關鍵型工作負載,您可能更喜好 MariaDB。

是否可以從 MySQL 切換至 MariaDB?

是,您能夠以最小的工作量從 MySQL 轉移至 MariaDB B。MariaDB 的設計旨在向後相容於 MySQL。這意味著針對 MySQL 編寫的應用程式和指令碼應當與 MariaDB 配合運作,而無需任何重大變更。 

在 MariaDB 5.5 之前,MariaDB 伺服器遵循 MySQL 版本編號結構描述,以便實現與 MySQL 相同重大版本的即時相容性。2012 年,MariaDB 伺服器的版本編號出現了不一致,以體現 MySQL 中未提供的功能日益增多。MariaDB 發佈了 10.0,而 MySQL 發佈了 5.6。

MariaDB 伺服器仍然保留與 MySQL 的高層級相容性。支援從舊版 MySQL 升級至最新 MariaDB 版本的就地升級。

從 MySQL 切換至 MariaDB 遵循一個標準的安裝程序。您可以執行 mysql_upgrade 工具,來更新 MySQL 資料庫的權限,以及具有 MariaDB 對等項目的事件資料表。

差異摘要:MySQL 與MariaDB

 

MySQL

MariaDB

JSON

MySQL 將 JSON 報告以二進位物件存放。

MariaDB 將 JSON 報告存放在字串中。MariaDB 的 JSON 資料類型是 LONGTEXT 的別名。

Oracle 資料庫相容性

MySQL 具有高層級相容性,但不支援 PL/SQL。

MariaDB 具有高層級相容性,且自 10.3 版本開始支援 PL/SQL。

速度與效能

MySQL 在複寫和查詢方面比 MariaDB 稍慢。

MariaDB 在複寫和查詢方面比 MySQL 稍快。

功能

MySQL 支援超級唯讀功能、動態資料欄和資料遮罩。

MariaDB 支援不可見資料欄和臨時資料表空間。

身份驗證

MySQL 具有 validate_password 元件。

MariaDB 具有三個密碼驗證程式外掛程式。

加密

MySQL 資料庫使用 InnoDB 和 AES 來加密靜態資料。

MariaDB 支援臨時日誌加密和二進位日誌加密。

儲存引擎

MySQL 的儲存引擎比 MariaDB 少。

MariaDB 的儲存引擎比 MySQL 多,並且可在一個資料表中使用多個引擎。

授權

MySQL 具有兩個版本:MySQL 企業版和 GPL 版。

MariaDB 完全依據 GPL。

執行緒集區

MySQL 在其企業版中具有執行緒集區。

MariaDB 可以一次管理超過 200,000 個連線,這比 MySQL 更多。

AWS 如何支援您的 MySQL 和 MariaDB 需求?

Amazon Relational Database Service (Amazon RDS) 是全受管服務的集合,方便在雲端設定、操作和擴展資料庫。

從七個常用的引擎中進行選擇,其中兩個專用於 MySQL 和 MariaDB。Amazon RDS for Maria DB 支援 MariaDB Server 版本 10.3、10.4、10.5 和 10.6。Amazon RDS for MySQL 支援 MySQL Community Edition 5.7 版和 8.0 版。 

Cloud Watch Logs

以下是您可透過使用 Amazon RDS 獲益的方法:

  • 在幾分鐘內部署可擴展的 MariaDB 和 MySQL 雲端資料庫,不僅符合成本效益,而且可調整硬體容量大小
  • 無需做出任何變更,即可使用現有的程式碼、應用程式和工具
  • 存取超過 50 個 CPU、記憶體、檔案系統和磁碟 I/O 指標,以進行進階資料庫監控
  • 享受增強的可用性和耐久性,以彈性方式橫向擴展超越單一資料庫執行個體的容量限制

立即建立帳戶,開始使用 AWS 上的 MySQL 和 MariaDB。

與 AWS 搭配使用的後續步驟

開始使用 MySQL 進行建置
開始使用 PostgreSQL 進行建置