Aurora DSQL 中的并发控制 - Amazon Aurora DSQL

Aurora DSQL 中的并发控制

并发可让多个会话同时访问和修改数据,而不会损害数据完整性和一致性。Aurora DSQL 在实施现代、无锁并发控制机制的同时提供 PostgreSQL 兼容性。它通过快照隔离来保持完全的 ACID 合规性,同时确保数据一致性和可靠性。

Aurora DSQL 的一个关键优势是其无锁架构,这消除了常见的数据库性能瓶颈。Aurora DSQL 可防止慢速事务阻塞其它操作,并消除死锁风险。这种方法使 Aurora DSQL 对于性能和可扩展性至关重要的高吞吐量应用程序特别有价值。

事务冲突

Aurora DSQL 使用乐观并发控制(OCC),其工作原理与传统的基于锁的系统不同。OCC 不使用锁,而是在提交时评估冲突。如果多个事务在更新同一行时发生冲突,Aurora DSQL 会按如下方式管理事务:

  • 提交时间最早的事务由 Aurora DSQL 处理。

  • 冲突的事务会收到 PostgreSQL 序列化错误,指示需要重试。

设计应用程序以实施重试逻辑来处理冲突。理想的设计模式是幂等的,尽可能将事务重试作为第一选择。建议采用的逻辑类似于标准 PostgreSQL 锁定超时或死锁情况下的中止和重试逻辑。然而,OCC 要求您的应用程序更频繁地实施此逻辑。

优化事务性能的准则

要优化性能,请尽量减少对单个键或小键范围的高度争用。要实现此目标,请按照以下准则设计架构,使其在集群键范围内分散更新:

  • 为表选择一个随机主键。

  • 避免使用会增加单个键争用的模式。即使在事务量增长的情况下,这种方法也能确保最佳性能。