Database 如果在Postgresql中使用异步提交,在其他事务看到提交之前是否有延迟?

Database 如果在Postgresql中使用异步提交,在其他事务看到提交之前是否有延迟?,database,postgresql,Database,Postgresql,我正在研究如何在一个Java应用程序中优化吞吐量,该应用程序经常(每秒100多个事务)更新Postgresql数据库中的数据。由于我不介意在数据库崩溃时丢失一些事务,因此我认为使用异步提交非常合适 我唯一关心的是,我不希望在提交之后有延迟,直到其他事务/查询看到我的提交。我使用默认的隔离级别“readcommitted” 所以我的问题是:在Postgresql中使用异步提交是否意味着在其他事务看到我提交的数据之前或在它们继续进行之前(如果它们一直在等待我的事务完成),会有延迟?(如前所述,我不在

我正在研究如何在一个Java应用程序中优化吞吐量,该应用程序经常(每秒100多个事务)更新Postgresql数据库中的数据。由于我不介意在数据库崩溃时丢失一些事务,因此我认为使用异步提交非常合适

我唯一关心的是,我不希望在提交之后有延迟,直到其他事务/查询看到我的提交。我使用默认的隔离级别“readcommitted”


所以我的问题是:在Postgresql中使用异步提交是否意味着在其他事务看到我提交的数据之前或在它们继续进行之前(如果它们一直在等待我的事务完成),会有延迟?(如前所述,我不在乎在将数据持久化到磁盘之前是否有延迟。)

这似乎就是您正在寻找的行为

选择异步提交模式意味着一旦事务逻辑上完成,服务器就会在 它生成的WAL记录实际上已经进入了磁盘。这 可以显著提高小型事务的吞吐量


WAL用于提供磁盘上的数据完整性,与正在运行的服务器的表完整性无关;只有在服务器崩溃时才重要。因为他们特别提到“只要事务在逻辑上完成”,文档表明这不会影响表的行为。

谢谢。我想这里的关键是“逻辑完成”,我用与您相同的方式解释文档。让我们看看是否有人真的能证实这一点,否则我现在就同意这个假设。如果这很重要,为什么不直接测试它呢?可以按表或表空间设置它吗?