产品战略专家梁宁确认出席AICon北京站,分享AI时代下的商业逻辑与产品需求 了解详情
写点什么

Uber 系统从 Postgres 迁移到 MySQL

  • 2016-08-25
  • 本文字数:986 字

    阅读完需:约 3 分钟

Uber 最近在博客中详细阐述了他们为什么要使用MySQL 来替代PostgreSQL 。Uber 遇到的主要困难源于Postgres 的写入放大问题。写入放大是在对涉及索引的单行数据进行更新时,需要更新所有的索引,从而导致大量对磁盘的写操作,在使用固态硬盘时这个问题更加严重。 HOT(Heap-Only-Tuples) 特性可以缓解这个问题,这在一些用例中也许是一个解决方案。因此,写入放大问题泄漏到了复制过程中,造成为了一些简单的更新而在副本间传播多个更新操作。在灾难恢复的场景中,由于数据中心之间可能相距较远,并且无法获得廉价、便利的带宽,就会导致重大问题。

在 Postgres 9.2 的一次常规更新中,一个 bug 导致了一些表的数据损坏。这是由于没有标记一些应该被标记为不活跃的数据所导致的。无法计算这个 bug 这所影响到的数据总数,而且由于复制是发生在物理层,这也就存在着损坏数据库索引的风险。

Postgres 的副本并没有真正支持多版本并发控制(MVCC)。副本必须和主节点使用一致的预写式日志(WAL: Write Ahead Log )。加上如果更新操作涉及其他事务中已打开的行,Postgres 会将其阻塞,这在很大程度上会影响长事务(long running transaction)。一旦长事务阻塞了预写式日志线程,就会被 Postgres 终止,如果应用开发人员没有意识到这点,特别是在使用事务边界不透明的对象关系映射(ORM)时,就会带来问题。

再一次由于复制过程是工作在物理层,数据库更新不得不在所有副本间同时进行,不然复制无法正常工作。这意味着就 Uber 的规模来说,升级到当时的新版本真的会造成很多问题。这个问题已经自 9.4 版本之后使用 pglogical 修复了。

在决定 Uber 案例的设计方案时,设计者看重 MySQL 的优势有:拥有灵活的副本、每个连接使用轻量级的线程而不是进程、廉价的缓存。应对磁盘存储上的主要问题,则使用 InnoDB 存储,使压缩更高效而不会影响大量索引或引起 Postgres 中的写入放大问题。

Markus Winand Simon Riggs Robert Haas 针对 Uber 用例提出了一些很好的反驳。他们详细阐述了在诸多用例中如何解决上述问题,以及为什么并不是对每个案例都应该抛弃 Postgres 而使用 MySQL,反之亦然。

查看英文原文: Uber Engineering Moving from Postgres to MySQL


感谢百占辉对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-08-25 19:004135
用户头像

发布了 41 篇内容, 共 13.7 次阅读, 收获喜欢 3 次。

关注

评论

发布
暂无评论
发现更多内容

脚本库详细说明 - 大屏云极简使用手册

shulinwu

怎样搭建企业内部wiki

小炮

企业 wiki

网络安全SSRF漏洞检测

网络安全学海

网络安全 信息安全 WEB安全 漏洞挖掘 信息安全渗透测试

6元自助洗车店加盟需要多少费用

共享电单车厂家

自助洗车加盟 6元自助洗车店加盟 6元自助洗车 自助洗车加盟费

隐私计算势头迅猛,但金融行业用户需要“冷静”

易观分析

金融 隐私计算 AMC

高层次人才一站式服务平台系统开发 探索全方位服务新模式

a13823115807

自助扫码洗车机加盟怎么加

共享电单车厂家

自助洗车机价格 自助扫码洗车机 自助洗车怎么加盟 共享洗车加盟

TiDB HTAP 遇上新能源车企:直营模式下实时数据分析的应用实践

PingCAP

参与开源项目很难吗?

捉虫大师

如何画好架构图

Hockor

架构 前端

英特尔陈伟:以智能边缘解锁数智时代新未来

科技新消息

乘数科技加入PolarDB开源数据库社区

阿里云数据库开源

数据库 阿里云 开源 开源数据库 polarDB

架构训练营-模块1-作业

kenlu

阿里云数据库MongoDB版助力吉比特《一念逍遥》游戏斩获千万玩家,运营效率成倍增长

MongoDB中文社区

mongodb

Linux云计算之VSFTP服务器概述-安装vsftp服务器端、客户端

学神来啦

Linux 运维

体验了一把最近很火的开源项目-MASA Blazor

MASA技术团队

C# .net 微软 组件库

模块一作业

库尔斯

架构实战营

T3 出行 Apache Kyuubi Flink SQL Engine 设计和相关实践

网易数帆

sql 大数据

江苏财政的数字新径,大型政企的云上坐标

脑极体

在线Javascript加密混淆工具

入门小站

工具

万亿级超高清产业变奏,分布式存储支撑关键应用落地

焱融科技

云计算 分布式 高性能 文件存储 影视渲染

Linux之tr命令

入门小站

在线HTML转MarkDown工具

入门小站

工具

2022 CCF国际AIOps挑战赛线上宣讲会成功举办

BizSeer必示科技

6元自助洗车设备一套多少钱一台

共享电单车厂家

自助洗车机多少钱 自助洗车机价格 自助洗车加盟 6元自助洗车设备 6元自助洗车机

架构训练营 - 模块一

junl

架构实战营

系列解读SMC-R:透明无感提升云上 TCP 应用网络性能(一)| 龙蜥技术

OpenAnolis小助手

网络协议 技术分享 龙蜥社区 RDMA SMC-R

深度剖析「圈组」消息系统设计 | 「圈组」技术系列文章

网易云信

开发 社交软件

与开源社区用户共创,首本《OceanBase 社区版入门到实战》电子书新鲜出炉啦!

OceanBase 数据库

Obsidian使用初体验

懒时小窝

软件推荐

6元共享24小时自助洗车加盟如何

共享电单车厂家

24小时共享自助洗车 6元自助洗车加盟

Uber系统从Postgres迁移到MySQL_数据库_Alex Giamas_InfoQ精选文章