一開始是在 Reddit 上看到的:「Upgrading Uber’s MySQL Fleet to version 8.0 (uber.com)」,然後發現 Hacker News 上的討論比較多:「Upgrading Uber's MySQL Fleet (uber.com)」。原文在「Upgrading Uber’s MySQL Fleet to version 8.0」這邊,是八月的文章,但看起來是最近被拿出來聊。
主要原因應該就是第一個提到的項目,MySQL 5.7 的 EoL 時間在去年的 2023/10,另外從文章裡的圖表可以看到,整個升級計畫應該是拉的蠻長的,在整理效能資料的圖片上可以看到 2023/04 升級完成的效能比較。
升級計畫看起來跟 Percona 有合作,這邊提到了處理升級後產生 performance regression 的部分:
Upgrading to MySQL 8.0 brought not only new features, but also some unexpected tweaks in query execution plans for certain clusters. This resulted in increased latencies and resource consumption, potentially impacting user experience. This happened for the cluster which powers all the dashboards running at Uber. To address this issue, we collaborated with Percona, identified a patch fix, and successfully implemented it for the affected clusters. The resolution ensured the restoration of optimized query performance and resource efficiency in alignment with the upgraded MySQL version.
所以應該是跑 Percona 包的 MySQL,但這讓我好奇了一點,印象中 Percona 應該是有延伸支援的計畫,如果有的話 Uber 未必會想要升級?
翻了 Percona 的支援文件,的確是還是有在繼續維護 5.7 版,而且現在 (2024/10) 還掛在 Active 狀態,而非 Extended Support (ES) 狀態:「Percona Release Lifecycle Overview」。
這邊看到個小插曲,MySQL 5.5 版已經放掉了,但 MySQL 5.6 版還沒放掉,進入了 ES 狀態。
我在猜是不是當初 Uber 做升級決定時 Percona 還沒宣佈會繼續支援 MySQL 5.7?不然大多數的情況都是能拖著就拖著...
Anyway,升級到 8.0 畢竟是累積了一包 major version 的改善,Uber 就挑了一些成功案例中的成功案例,像是很漂亮的 lock 大幅下降的情況:
還有提出某些 query 的時間大幅下降的 case:
如果要猜到底是什麼原因要升級,我覺得比較像是當初因為 EoL schedule + compliance 的需求,加上當初 Percona 又還沒公開會繼續支援,所以就安排了升級的計畫。
從「Business account privacy and security」這邊可以看到至少有 ISO 27001 與 PCI DSS 兩套 compliance 要維護:
We maintain ISO 27001 and PCI DSS 3.2.1 certifications.
也許過個十年後會有人出來講?