《選哪個》

兩大開源數據庫,輕舟重劍各揚鞭。

輕舟MySQL融萬象,重劍PG破千淵。

向量模型逐浪起,IO異步驚雲巔。

更看華夏騰飛處,自主可控有新篇。


下週就進入12月份了,隨着2025年即將落幕,又到了一年一度年終總結與規劃的時刻。在數據庫領域, MySQL和PostgreSQL這兩大開源巨頭的競爭格局也在發生着變化。

01-流行度趨勢對比

2025年馬上過去了,MySQL和PG,到底選哪個?_MySQL

DB-Engines流行度趨勢排名中,MySQL的指數是一降再降。自我工作開始,得益於LAMP的經典架構而使得MySQL成為世界上最流行的開源數據庫,到2019年,Oracle收購SUN繼而擁有了MySQL,有了一波短暫的高潮之後,就開始斷崖式的下跌,MySQL 8.x到9.x中間經歷了6年,新功能隔靴搔癢,雖然大家都知道Oracle不會在開源領域好好培養自己的競爭對手,但MySQL落到如此地步也是足夠讓人唏噓。

2025年馬上過去了,MySQL和PG,到底選哪個?_數據庫_02

對比下來PG則是一路高歌猛進,近年來版本更新維持一年一個大版本,今年的PG18把異步I/O和升級秒切做成標配,大大提升了整體性能和可運維能力,更別提眾多國產數據庫選擇在PG基礎上進行研發,掌握了PG,就相當於掌握了至少5款國產數據庫,無論是新手入門,還是老手的技術選型,選擇哪款顯而易見。

02-最新版本功能對比

  • MySQL 給“AI 時代”開了扇門;PG 把“老問題”做到了極致

在AI浪潮席捲而來的今天,MySQL終於推出了向量功能,開始提供vector類型支持,並原生支持了VECTOR_DIM()、STRING_TO_VECTOR()、VECTOR_TO_STRING()三個函數,對比PG系的pgvector,具備豐富的向量距離計算函數和向量索引支撐能力,MySQL要追的還有很多。對比下來PG18重磅能力是實現了異步 I/O的產品化,可以大大提升順序掃描、Vacuum、Bitmap Heap Scan的處理性能,使得PG離核心數據庫更進一步。

  • MySQL玩企業版的“語言融合”,PG 玩“潤物細無聲的”SQL能力”

開發效率方面,MySQL引入了JavaScript 存儲程序支持,打破了傳統存儲過程只能使用 SQL 或 PL/SQL 的限制,適合需要調用 JS 庫(如數學計算、文本處理)的複雜業務場景,提升開發效率,不過那麼好的功能,當然只有在企業版中才能應用了。PG新版支持原生UUIDv7,虛擬生成列默認啓用並且支持邏輯複製,returning直接獲取新舊值,以後更新數據後要對比新舊值,再也不需要寫觸發器查兩次表了,TPS直接翻倍。

  • PG讓“大版本升級”不再是運維噩夢,MySQL暫無對應殺器

運維體驗方面,PG 18實現了一個重大突破。過去pg_upgrade升級主版本後,查詢優化器需要重新收集統計信息,導致升級後的一段時間內查詢性能不佳,即所謂的冷啓動問題。PG 18解決了這個痛點,pg_upgrade現在可以在升級過程中保留查詢計劃器的統計信息,讓數據庫升級後能立刻達到預期的性能水平。此外,pg_upgrade本身也變快了,尤其是在處理包含大量表和序列的數據庫時。新增的--jobs參數可以並行執行檢查,而--swap參數則通過交換目錄的方式來代替文件複製,進一步縮短停機時間。Mysql升級目前依然需要就地升級,備份→關機→替換→祈禱。

此外,PG早已不是單一的關係型數據庫了,地理空間,時間序列,向量檢索,機器學習,OLAP分析,全文檢索,圖數據庫,PG擁有目前最繁榮的擴展生態,這一點也是被Oracle逐漸雪藏的MySQL難以企及的。

2025年馬上過去了,MySQL和PG,到底選哪個?_數據庫_03

03-怎麼選?
站在2025年的尾聲,回望MySQL和PG的發展軌跡,PG似乎在技術創新和性能表現上佔據了先機,當然MySQL也憑藉其龐大的現有生態和簡單易用的特點,依然在許多場景下是不可替代的選擇。

不過實際工作中,數據庫選型是一個十分複雜,有時又十分草率的活,複雜是如果當成一個工程項目去進行篩選和測試,要考慮和驗證的點數不勝數,草率是因為諸多項目的數據庫選型的決策者,往往都並不是最懂數據庫的人,加上國產數據庫的蒸蒸日上,拿着開源hadoop底座硬往銀行核心交易系統強推的事,也不是沒有出現過。

總之,對於新手入門,個人強烈推薦去學習和研究PG。

對於項目選型,問自己三句話:

  • 預算誰批?
  • 鍋誰背?
  • 半夜誰起牀?

答案有了,數據庫也就有了。