我参考了 PostgreSQL 网站上的 2 个文档页面:#1和#2从这些中,我们看到事务日志每秒被刷新到磁盘 5 次(wal_writer_delay = 200ms),并且我们还看到 RDBMS 不会将事务报告为成功,直到它被提交到日志文件,因为默认情况下synchronous_commit = on。
如果每次写入都在自己的事务中完成(通常情况如此),那么理论上每秒可报告的成功写入次数将达到 5 次。原因是日志写入磁盘的速度不会比这更快。
然而我们看到的速度却是每秒数千次。
这是如何运作的?
需要明确的是,我说的是每次写入都在其自己的事务中(默认用法)。我知道为什么批量插入不适用于这个问题。
答案1
当 WAL 被写入时,提交将会排队并且全部刷新。
所以你会得到大团体每秒提交 5 次。