TiDB4PG | 与 TiDB 共舞,一次“亦步亦趋”的升级
我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。
TiDB4PG 的诞生及其进化
为了让企业级应用享受分布式数据库的优势,团队启动了一个项目,对开源分布式数据库TiDB进行改造,创造了TiDB4PG,一个能够兼容PgSQL协议的版本。原本,TiDB仅高度兼容MySQL协议,但许多企业应用同时使用MySQL、PgSQL和Oracle等数据库,导致搬迁工作量巨大。因此,TiDB4PG应运而生。
TiDB 版本升级挑战
在TiDB4PG项目研发初期,选择的TiDB版本是4.0.11。然而,TiDB的版本更新速度远超预期,不到一年便推进到了5.3版本。由于TiDB4PG与TiDB高度耦合,直接合并新版本的代码变动庞大,存在冲突文件上百个,修复工作量巨大。
采取的升级方案
经过权衡,团队决定采用一种更简单的方法来升级TiDB4PG——在TiDB的5.3.0版本代码上重新实现TiDB4PG所需的改动。这种方法简化了工作量,因为TiDB4PG中的改动是模块化的,便于搬运。此外,TiDB4PG中与PgSQL相关的代码已被单独抽出,便于后期维护。
性能测试
升级后,对TiDB4PG 5.3.0进行了性能对比测试,确保其性能与TiDB 5.3.0保持一致。测试结果显示,5.3.0版本相较于4.0.11版本在性能上有20%-40%的提升,并且TiDB与TiDB4PG在相同版本下性能相近,表明兼容代码对性能影响甚微。
数据迁移
升级至5.3.0后,现有数据如何迁移到新版本成为问题。由于TiDB4PG仅修改了TiDB-Server的代码,而TiDB4PG-Server和TiDB-Server均无状态,数据迁移问题可通过TiDB支持的备份工具解决。TiDB4PG集群实质上也是TiDB集群,因此大多数TiDB生态工具在TiDB4PG集群中仍然适用。
升级后的TiDB4PG
TiDB4PG从v4.0.11升级到v5.3.0后,在功能和性能上都有显著提升。包括20%-40%的读写性能提升,新增公共表达式支持、排序规则支持、临时表支持以及表达式索引等功能。尽管每次升级都充满挑战,团队对于未来更强大的TiDB功能和性能保持期待,并将继续升级TiDB4PG,与TiDB共同进步。
为了获取更多信息和源代码,可以在微信公众号平台回复:TiDB4PG5.3。
想要了解更多内容?
白皮书上线