Перейти к содержимому

Uber 頂尖工程師親自揭密:為什麼我們全面棄用 Postgres 轉投 MySQL?

NickBrainEvo

0:00 / 0:00

Uber 頂尖工程師親自揭密:為什麼我們全面棄用 Postgres 轉投 MySQL?

19 просмотров · 12 дней назад
NickBrainEvo
43 подписчика
19 просмотров · 12 дней назад
當企業規模爆炸性成長,原本運作良好的技術架構可能會成為致命瓶頸。Uber 工程團隊早在早期使用 Python Monolith 搭配 Postgres 進行資料持久化,但隨著業務擴展,Postgres 在底層設計上的局限性逐漸顯現,包括 Write Amplification(寫入放大)、Replica MVCC 延遲過高,甚至在 9.2 版本遇到的WAL資料毀損 Bug。 本集將帶你深度拆解 Uber Staff Software Engineer Evan Klitzke 的權威文章,剖析 Uber 為何決定打造 Schemaless 分層架構,並將核心資料庫全面轉移至 MySQL (InnoDB) 的技術決策細節! 🔗 參考資料與原文連結: • Uber Blog 原文:https://www.uber.com/in/en/blog/postg... 00:00 引言:Uber 核心機房的頻寬危機 01:37 Postgres 的底層核心:不可變的 Tuple 與 CTID 物理座標 02:46 資料更新機制與 MVCC(多版本併發控制) 03:51 索引維護難題:CTID 變動導致的全索引大風吹 05:06 預寫式日誌(WAL)與物理同步機制 06:46 核心破綻:寫入放大(Write Amplification)災難解析 08:25 物理同步風險:9.2 版本 Bug 與資料庫結構損毀 09:44 備份端讀寫衝突:無真正的 MVCC 支援與超時強退機制 10:56 版本升級死衚衕:無法跨 major 版本同步與停機噩夢 12:12 MySQL InnoDB 的解法:引入主鍵與邏輯尋址的中間層 13:35 原地更新與回滾段(Rollback Segment)的優雅設計 14:38 邏輯同步的優勢:近乎零停機升級與真正的 MVCC 15:48 記憶體管理比較:Linux PageCache vs InnoDB BufferPool 17:03 高併發連線極限:Process per Connection vs Thread per Connection 18:04 總結與思考:看似直接的捷徑與具有彈性中間人的系統哲學 #Uber工程 #Postgres #MySQL #資料庫架構 #Schemaless #後端開發 #系統設計 #SoftwareEngineering #InnoDB #WAL