Skip to content
  • Home
  • Python教學
  • 科技新聞資訊
  • 網站開發教學
Copyright 網絡設計教學 2025
Theme by ThemeinProgress
Proudly powered by WordPress
  • Home
  • Python教學
  • 科技新聞資訊
  • 網站開發教學
網絡設計教學網絡設計教學,網站網頁教學,軟體使用教學
  • You are here :
  • Home
  • 科技新聞資訊
  • 全方位對比Postgres 和MySQL (2023 版) – Bytebase的個人空間- 科技資訊
科技新聞資訊

全方位對比Postgres 和MySQL (2023 版) – Bytebase的個人空間- 科技資訊

Jiking 2023-07-13 Article

根據2023 年Stack Overflow 調研,Postgres 已經取代MySQL 成為最受敬仰和渴望的數據庫。

file

隨著Postgres 的發展勢頭愈發強勁,在Postgres 和MySQL 之間做選擇變得更難了。

如果看安裝數量,MySQL 可能仍是全球最大的開源數據庫。

file

Postgres 則自詡為全球最先進的開源關係型數據庫。

file

因為需要與各種數據庫及其衍生產品集成,Bytebase 和各種數據庫密切合作,而託管MySQL 和Postgres 最大的雲服務之一Google Cloud SQL 也是Bytebase 創始人的傑作之一。

我們對Postgres 和MySQL 在以下幾個維度進行了比較:

  • 許可證License
  • 性能Performance
  • 功能Features
  • 可擴展性Extensibility
  • 易用性Usability
  • 連接模型Connection Model
  • 生態Ecosystem
  • 可運維性Operability

file

除非另有說明,下文基於最新的主要版本Postgres 15 和MySQL 8.0 (使用InnoDB)。在文章中,我們使用Postgres 而不是PostgreSQL,儘管PostgreSQL 才是官方名稱,但被認為是一個錯誤的決定。

file

許可證License

  • MySQL 社區版採用GPL 許可證。
  • Postgres 發佈在PostgreSQL 許可下,是一種類似於BSD 或MIT 的自由開源許可。

即便MySQL 採用了GPL,仍有人擔心MySQL 歸Oracle 所有,這也是為什麼MariaDB 從MySQL 分叉出來。

性能Performance

對於大多數工作負載來說,Postgres 和MySQL 的性能相當,最多只有30% 的差異。無論選擇哪個數據庫,如果查詢缺少索引,則可能導致x10 ~ x1000 的降級。話雖如此,在極端的寫入密集型工作負載方面,MySQL 確實比Postgres 更具優勢。可以參考下文了解更多:

除非你的業務達到了Uber 的規模,否則純粹的數據庫性能不是決定因素。像Instagram, Notion 這樣的公司也能夠在超大規模下使用Postgres。

功能Features

對象層次結構

MySQL 採用了4 級結構:

  1. 實例
  2. 數據庫
  3. 表
  4. 列

Postgres 採用了5 級結構:

  • 實例(也稱為集群)
  • 數據庫
  • 模式Schema
  • 表
  • 列

ACID 事務

兩個數據庫都支持ACID 事務,Postgres 提供更強大的事務支持。

file

安全性

Postgres 和MySQL 都支持RBAC。

Postgres 支持開箱即用的附加行級安全(RLS),而MySQL 需要創建額外的視圖來模擬此行為。

查詢優化器

Postgres 的查詢優化器更優秀,詳情參考此吐槽。

複製

Postgres 的標準複製使用WAL 進行物理複製。 MySQL 的標準複製使用binlog 進行邏輯複製。

Postgres 也支持通過其發布/訂閱模式進行邏輯複製。

JSON

Postgres 和MySQL 都支持JSON。 Postgres 支持的功能更多:

  • 更多操作符來訪問JSON 功能。
  • 允許在JSON 字段上創建索引。

CTE (Common Table Expression)

Postgres 對CTE 的支持更全面:

  • 在CTE 內進行SELECT, UPDATE, INSERT, DELETE 操作
  • 在CTE 之後進行SELECT, UPDATE, INSERT, DELETE 操作

MySQL 支持:

  • 在CTE 內進行SELECT 操作
  • 在CTE 之後進行SELECT, UPDATE, DELETE 操作

窗口函數(Window Functions)

窗口幀類型:MySQL 僅支持Row Frame 類型,允許定義由固定數量行組成的幀;而Postgres 同時支持Row Frame 和範圍幀類型。

範圍單位:MySQL 僅支持UNBOUNDED PRECEDING 和CURRENT ROW 這兩種範圍單位;而Postgres 支持更多範圍單位,包括UNBOUNDED FOLLOWING 和BETWEEN 等。

性能:一般來說,Postgres 實現的Window Functions 比MySQL 實現更高效且性能更好。

高級函數:Postgres 還支持更多高級Window Functions,例如LAG(), LEAD(), FIRST_VALUE(), and LAST_VALUE()。

可擴展性Extensibility

Postgres 支持多種擴展。最出色的是PostGIS,它為Postgres 帶來了地理空間能力。此外,還有Foreign Data Wrapper (FDW),支持查詢其他數據系統,pg_stat_statements 用於跟踪規劃和執行統計信息,pgvector 用於進行AI 應用的向量搜索。

MySQL 具有可插拔的存儲引擎架構,並誕生了InnoDB。但如今,在MySQL 中,InnoDB 已成為主導存儲引擎,因此可插拔架構只作為API 邊界使用,而不是用於擴展目的。

在認證方面,Postgres 和MySQL 都支持可插拔認證模塊(PAM)。

易用性Usability

Postgres 更加嚴格,而MySQL 更加寬容:

  • MySQL 允許在使用GROUP BY 子句的SELECT 語句中包含非聚合列;而Postgres 則不允許。
  • MySQL 默認情況下是大小寫不敏感的;而Postgres 默認情況下是大小寫敏感的。
  • MySQL 允許JOIN 來自不同數據庫的表;而Postgres 只能連接單個數據庫內部的表,除非使用FDW 擴展。

連接模型Connection Model

Postgres 採用在每個連接上生成一個新進程的方式工作。而MySQL 則在每個連接上生成一個新線程。因此,Postgres 提供了更好的隔離性,例如,一個無效的內存訪問錯誤只會導致單個進程崩潰,而不是整個數據庫服務器。另一方面,進程模型消耗更多資源。因此,在部署Postgres 時建議通過連接池(如PgBouncer 或pgcat)代理連接。

生態Ecosystem

常見的SQL 工具都能很好地支持Postgres 和MySQL。由於Postgres 的可擴展架構,並且仍被社區擁有,近年來Postgres 生態系統更加繁榮。對於提供託管數據庫服務的應用平台,每個都選擇了Postgres。從早期的Heroku 到更新的Supabase, render 和Fly.io。

可運維性Operability

由於底層存儲引擎設計問題,在高負載下,Postgres 存在臭名昭著的XID wraparound 問題。

對於MySQL,在Google Cloud 運營大規模MySQL 集群時,我們遇到過一些複製錯誤。

這些問題只會在極端負載下發生。對於正常工作負載而言,無論是Postgres 還是MySQL 都是成熟且可靠的。數據庫託管平台也提供集成備份/恢復和監控功能。

Postgres 還是MySQL

2023 年了,在Postgres 和MySQL 之間做選擇仍然很困難,並且經常引起激烈討論。

file

file

總的來說,Postgres 有更多功能、更繁榮的社區和生態;而MySQL 則更易學習並且擁有龐大的用戶群體。我們觀察到與Stack Overflow 結果相同的行業趨勢,即Postgres 在開發者中變得越來越受歡迎。但根據我們的實際體驗,精密的Postgres 犧牲了一些便利性。如果你對Postgres 不太熟悉,最好從雲服務提供商那裡啟動一個實例,並運行幾個查詢來上手。有時候,這些額外好處可能並不值得,選擇MySQL 會更容易一些。

同時,在一個組織內部共存Postgres 和MySQL 也是很常見的情況。如果需要同時管理Postgres 和MySQL 的開發生命週期,可以來了解一下Bytebase。

file


💡 你可以訪問官網,免費註冊雲賬號,立即體驗Bytebase。

#全方位對比Postgres #和MySQL #版 #Bytebase的個人空間 #科技資訊

You may also like

探索讓您在 2024 年致富的商業模式! Shopify 版

Joomla 3.9 版 เวอร์ชั่นใหม่ล่าส ุดเวอู์ส ุด ั่นสุดท้ายของ3.x

Shopify 版 Summer ’23 演練演示

Joomla 4.2 版

Joomla 適合像你這樣的大笨蛋 – 2020 版

上海网信办对属地 46 款 App 收集使用个人信息情况开展专项检查 – 科技資訊

相关贴文:

  1. Astro:一款現代化的輕量級靜態站點生成器
  2. 每日一博| 從0 到1 設計通用數據大屏搭建平台
  3. 一次JVM GC長暫停的排查過程- 京東雲開發者的個人空間- 科技資訊
  4. 聊聊Cookie、Session、Token 背後的故事- 華為雲開發者聯盟的個人空間- 科技資訊
  5. 天貓汽車商詳頁的SSR改造實踐- 大淘寶技術的個人空間- 科技資訊
  6. 35張圖,直觀理解Stable Diffusion – OneFlow深度學習框架的個人空間- 科技資訊
  7. 一種異步延遲隊列的實現方式- 京東雲開發者的個人空間- 科技資訊
  8. 2022 年大前端總結來了,我們能抓住什麼? – 科技資訊編輯部的個人空間- 科技資訊
Tags: Bytebase, Bytebase的個人空間, OSCHINA博客, 全方位對比Postgres, 全方位對比Postgres 和MySQL (2023 版) - Bytebase的個人空間, 和MySQL, 版, 科技資訊

近期文章

  • 8個最佳WooCommerce SEO插件用於更好的排名(2025)
  • 為什麼Shopify擊敗電子商務的WordPress
  • 我希望在使用WooCommerce之前我知道的5件事
  • 停止在WooCommerce插件上浪費$ 1000!嘗試變體怪物$ 59解決方案
  • 如何使用免費的WooCommerce禮品卡產品(使用免費插件)來提高銷售
  • WooCommerce的動態定價和折扣規則,用於銷售技術
  • 免費的WooCommerce產品搜索插件 – 電子商務網站的設置Advance WooSearch | AJAX搜索
  • Shopify vs WooCommerce:在線商店的最佳電子商務平台🔍
  • 啟動專業,功能豐富的超級智能電子商務網站| Merto -WooCommerce WordPress主題

標籤雲

Dropshipping ecommerce JavaScript Joomla OSCHINA博客 python REBELLION Shopify Shopify 商店設置 Shopify 直銷 Woocommerce WordPress 代發貨 刀塔2 和 商店 商業 喬姆拉 在 如何創建 Shopify 商店 如何在 如何建立 Shopify 商店 如何開始代出貨 年 店舖教學 店鋪化 店鋪培訓 教學 獲獎產品 直銷 Shopify 直銷教程 科技資訊 程式碼 網路業務 網路賺錢 臉書廣告 與 行銷 詳解 購物 跨平台 運輸船 適合初學者的 Shopify 教學課程 適合初學者的直銷 電子商務

Copyright 網絡設計教學 2025