當前位置: 妍妍網 > 碼農

甲骨文殺死了MySQL

2024-06-23碼農

大約15年前, Oracle收購了Sun公司 [1] ,從而也擁有了MySQL,互聯網上關於Oracle何時會「扼殺MySQL」的 討論 [2] 此起彼伏。

當時流傳著各種理論:從徹底扼殺 MySQL 以減少對 Oracle 專有資料庫的競爭,到幹掉 MySQL 開源計畫,只留下 「MySQL企業版」 作為唯一選擇。

這些謠言的傳播對 MariaDB,PostgreSQL 以及其他小眾競爭者來說都是好生意,因此這些謠言在當時傳播得非常廣泛。

然而實際上,Oracle 最終把 MySQL 管理得還不錯。MySQL 團隊基本都保留下來了,由 MySQL 老司機 Tomas Ulin 掌舵。

MySQL 也變得更穩定、更安全。許多技術債務也解決了,許多現代開發者想要的功能也有了,例如 JSON支持和高級 SQL 標準功能的支持。

雖然有 「MySQL企業版」 [3] ,它實際上關註的是開發者不太在乎的企業需求:如可插拔認證、審計、防火墻等。雖然也有專有的 GUI 圖形界面、監控與備份工具(例如 MySQL 企業監控),但同樣有許多開源和商業軟體競爭者,因此並沒有產生特別大的供應商釘選效應。

在這段時間裏,我也常為 Oracle 辯護,因為許多人都覺得 MySQL 會遭受虐待,就因為 —— 它是Oracle。

我認為在那段期間,Oracle 一致遵守了這個眾所周知的開源成功的黃金定律:「 轉換永遠不應該妨礙采用 。」

註:「Conversion should never compromise Adoption」

這句話指在開發或改進開源軟體時,轉換或升級過程中的任何變動都不應妨礙現有使用者的使用習慣或新使用者的加入。

然而近些年來,隨著 Oracle 推出了 「MySQL Heatwave」(一種 MySQL 雲資料庫服務),事情開始起變化了。

MySQL Heatwave 引入了許多 MySQL 社群版或企業版中沒有的功能,例如加速分析查詢與機器學習。

在「分析查詢」上,MySQL 的問題相當嚴重,到現在甚至都不支持 並列查詢 。市場上新出來的 CPU 核數越來越多,都到幾百個了,但單核效能並沒有顯著增長,而這嚴重制約了 MySQL 的分析效能提升 —— 不僅僅是分析套用的查詢受限,像日常套用裏簡單的 GROUP BY 查詢也會受影響。(備註:MySQL 8 對 DDL 有一些 並列支持 [4] ,但查詢沒有這種支持)

這麽搞的原因,是不是希望使用者能夠有更多理由去買 MySQL Heatwave?但或者,人們其實也可以直接選擇用分析能力更強的 PostgreSQL 和 ClickHouse。

另一個開源 MySQL 極為拉垮的領域是 向量檢索 。其他主流開源資料庫都已經添加了向量檢索功能,MariaDB 也正在努力實作這個功能,但就目前而言,MySQL 生態裏只有雲上限定的 MySQL Heatwave [5] 才有這個功能,這實在在是令人遺憾。

然後是最奇怪的決策 —— Javascript 支持是一個只在企業版中提供的功能,我認為 MySQL 應該竭盡所能地去贏得 Javascript 開發者的心,而現在很多 JS 開發者都更傾向於更簡單的 MongoDB 了。

我認為上述舉措都違背了前面提到的開源黃金法則 —— 因為它們顯然限制了 MySQL 的采用 —— 不論是這些「XX限定」的特定功能,還是對 MySQL 未來政策變化的擔憂。

如果這還不夠,MySQL 的效能也出現了嚴重下降,似乎是因為 多年來對效能工程部門的忽視 [6]

與MySQL 5.6 相比,單執行緒簡單工作負載上的效能出現了大幅下滑。你可能會說增加功能難免影響效能,但 MariaDB 的效能退化要輕微得多,而 PostgreSQL 甚至能在 新增功能的同時顯著提升效能 [7]

顯然,我無法窺視甲骨文管理團隊的討論,也不能說這到底是蠢還是壞,但過去幾年的這些產品決策,顯然不利於MySQL的普及。

特別是在同一時間,PostgreSQL 在引領使用者心智上大步向前,在 DB-Engines 排名上大幅縮小了與 MySQL 的熱度差距,而根據 [8] ,甚至已經超過 MySQL 成為最流行的資料庫了。

無論如何,除非甲骨文轉變其關註點,顧及現代開發者對關聯式資料庫的需求,否則 MySQL 將坐以待斃 —— 無論是被 Oracle 的行為殺死,還是被 Oracle 的不作為殺死。

原文:Percona Blog,作者 Peter Zaitsev。Percona 是 MySQL 生態的重要貢獻者,開發了知名的PT系列工具,MySQL備份工具,監控工具與發行版。

譯者: 馮若航 ,網名 Vonng, 作者,PostgreSQL 專家與布道師。資料庫老司機,

參考閱讀

[9]

[10]

Is Oracle Finally Killing MySQL? [11]

Can Oracle Save MySQL? [12]

Sakila, Where Are You Going? [13]

Postgres vs MySQL: the impact of CPU overhead on performance [14]

Perf regressions in MySQL from 5.6.21 to 8.0.36 using sysbench and a small server [15]

References

[1] Oracle收購了Sun公司:
https://www.oracle.com/corporate/pressrelease/oracle-buys-sun-042009.html
[2] 關於Oracle摧毀MySQL討論:
https://www.quora.com/Did-Oracle-buy-MySQL-in-order-to-kill-it
[3] 「MySQL企業版」:
https://www.mysql.com/products/enterprise/
[4] 並列支持:
https://dev.mysql.com/blog-archive/mysql80-innodb-parallel-threads-ddl/
[5] MySQL Heatwave:
https://blogs.oracle.com/mysql/post/introducing-vector-store-and-generative-ai-in-mysql-heatwave
[6] MYSQL 多年來對效能工程部門的忽視:
https://smalldatum.blogspot.com/2024/04/sysbench-on-small-server-mariadb-and.html
[7] PG在新增功能的同時 顯著提升效能:
https://smalldatum.blogspot.com/2023/10/postgres-vs-mysql-impact-of-cpu.html
[8] StackOverflow開發者調查:
https://survey.stackoverflow.co/2023/#technology-most-popular-technologies
[9] MySQL效能越來越差,Sakila將何去何從?:
https://pigsty.cc/zh/blog/db/sakila-where-are-you-going/
[10] MySQL 的正確性為何如此垃圾?:
https://pigsty.cc/zh/blog/db/bad-mysql/
[11] Is Oracle Finally Killing MySQL?:
https://www.percona.com/blog/is-oracle-finally-killing-mysql/
[12] Can Oracle Save MySQL?:
https://www.percona.com/blog/can-oracle-save-mysql/
[13] Sakila, Where Are You Going?:
https://www.percona.com/blog/sakila-where-are-you-going/
[14] Postgres vs MySQL: the impact of CPU overhead on performance:
https://smalldatum.blogspot.com/2023/10/postgres-vs-mysql-impact-of-cpu.html
[15] Perf regressions in MySQL from 5.6.21 to 8.0.36 using sysbench and a small server:
https://smalldatum.blogspot.com/2024/02/perf-regressions-in-mysql-from-5621-to.html

END

熱門文章

-

-

-

-

-