摘要:云原生数据库的主流设计采用一主多从架构, 集群中从节点可以分担主节点的只读请求, 写请求由主节点处理. 在此基础上, 为了进一步满足大规模交易扩展的需求, 一些云数据库尝试实现多写事务扩展. 多写扩展的一种实现路径是在计算节点间实现共享缓存, 支持跨节点的数据访问. 在基于共享缓存的数据库系统中, 跨节点远程访问的开销远大于本地访问, 因此缓存协议的设计是影响系统性能和可扩展性的关键因素. 对缓存协议提出了两个创新性改进, 并基于PostgreSQL实现了支持多写事务处理的共享缓存数据库PG-RAC. 一方面, PG-RAC提出一种新型的分布式链式路由策略, 将路由信息分散在各计算节点. 相比单点目录管理的路由策略, 事务平均延迟降低了约20%. 另一方面, 还改进了副本页失效机制, 将失效操作从事务路径分离, 减小了事务处理关键路径的延迟. 在此基础上, PG-RAC利用多版本并发控制的特性, 进一步提出推迟副本页失效时机, 有效提高了缓存利用率. TPC-C实验结果显示, 在配备4台计算节点的集群中, 吞吐率为PostgreSQL的近2倍, 为分布式数据库Citus的1.5倍.