網站資料庫是選擇 MySQL 好呢?還是選擇 MariaDB 比較好?
MySQL 和 MariaDB 都可以與PHP程式語言密切解和使用!
網站使用的資料庫,是選擇 MySQL 好呢?還是選擇 MariaDB 比較好?
那我們先來看:誰在使用 MySQL 和 MariaDB?
MySQL 和 MariaDB 都發布了各自的用戶名單:
使用 MySQL 的有 Facebook、Github、YouTube、Twitter、PayPal、諾基亞、Spotify、Netflix 等。
使用 MariaDB 的有 Redhat、DBS、Suse、Ubuntu、1&1、Ingenico 等。
MySQL 與 MariaDB 功能比較:
有一些令人興奮的新功能(如視窗函數、角色控制或公共表表達式(CTE))可能值得一提,但本文只是為了比較兩個資料庫,所以我們在這裡只討論其中一方專門提供的功能,以便更好地說明讀者選取合適自己的資料庫。
讓我們來看一下只有其中一個資料庫專門提供的功能:
1. JSON 資料類型——從 5.7 版本開始,MySQL 支援由 RFC 7159 定義的原生 JSON 資料類型,可以高效地訪問 JSON 文件中的資料。
MariaDB 沒有提供這一增強功能,認為 JSON 資料類型不是 SQL 標準的一部分。
但為了支援從 MySQL 複製資料,MariaDB 為 JSON 定義了一個別名,實際上就是一個 LONGTEXT 列。
MariaDB 聲稱兩者之間沒有顯著的效能差異,但他們並沒有提供基準測試資料來支援這個說法。
值得注意的是,MySQL 和 MariaDB 都提供了一些 JSON 關聯函數,用於更方便地訪問、解析和檢索 JSON 資料。
2. 預設身份認證——在 MySQL 8.0 中,預設的身份認證外掛程式是 caching_sha2_password,而不是 mysql_native_password。
這一增強通過使用 SHA-256 算法提高了安全性。
3. MySQL Shell——MySQL Shell 是 MySQL 的進階指令行用戶端和代碼編輯器。
除了 SQL 之外,MySQL Shell 還提供了 JavaScript 和 Python 腳本功能。
不過使用者不能使用 mysqlsh 訪問 MariaDB 伺服器,因為 MariaDB 不支援 MySQL X 協定。
4. 加密——MySQL 對重做 / 復原日誌進行了加密(可配),但不加密臨時表空間或二進位日誌。相反,MariaDB 支援二進位日誌和臨時表加密。
5. 密鑰管理——MariaDB 提供開箱即用的 AWS 密鑰管理外掛程式。MySQL 也提供了一些用於密鑰管理的外掛程式,但它們僅在企業版中可用。
6. sys 模式——MySQL 8.0 提供了 sys 模式,這是一組對象,可說明資料庫管理員和軟體專案師更好地理解通過 Performance 模式收集的資料。
sys 模式對象可用於改善和診斷,不過 MariaDB 沒有提供這個增強功能。
7. validate_password 外掛程式——validate_password 外掛程式主要用於測試密碼並提高安全性。
MySQL 預設啟用了這個外掛程式,而 MariaDB 則不啟用。
8. 超級唯讀—— MySQL 通過提供超級唯讀(super read-only)模式來增強 read_only 功能。
如果啟用了 read_only,伺服器只容許具有 SUPER 權限的使用者執行用戶端更新。如果同時啟用了 super_read_only,那麼伺服器將禁止具有 SUPER 權限的使用者執行用戶端更新。
9. 不可見列——這個功能在 MariaDB 上可用,MySQL 不支援該功能。
這個功能容許建立未在 SELECT * 語句中出現的列,而在進行插入時,如果它們的名字沒有出現在 INSERT 語句中,就不需要為這些列提供值。
10. 執行緒池——MariaDB 支援連線執行緒池,這對於短查詢和 CPU 密集型的工作負載(OLTP)來說非常有用。
在 MySQL 的社區版本中,執行緒數是固定的,因而限制了這種彈性。MySQL 計劃在企業版中增加執行緒池功能。
效能
近年來,出現了很多關於 MySQL 和 MariaDB 引擎效能的基準測試。
我們不認為「MySQL 或 MariaDB 哪個更快」這個問題會有一個最終的答案,它在很大程度上取決於具體的使用場景、查詢、使用者和連線數量等因素。
不過,如果你確實想知道,下面列出了我們發現的一些最新的基準測試結果。
請注意,這些測試都是在一組特定的資料庫 + 引擎(例如 MySQL+InnoDB)組合上進行的,因此得出的結論只與特定的組合有關。
之前,因為有傳出MySQL安全問題:安全顧問揭露MySQL含有可竊取用戶檔案的設計漏洞
所以,有一些網站與程式設計就改使用:MariaDB 資料庫
這麼一改,有些人就回不去了(雖然 MySQL 一直有在進步)
使用習慣了,那幹麻需要改來改去?自找麻煩!