数据库中的每秒事务数(例如PostgreSQL)


0

我指的是PostgreSQL网站上的2个文档页面:#1#2。从这些数据中,我们看到事务日志每秒刷新到磁盘5次(wal_writer_delay = 200ms),并且我们还看到RDBMS在将事务提交到日志文件之前不会将事务报告为成功,因为sync_commit = on by默认。

如果每个操作都是在自己的事务中完成的,那么理论上每秒可以成功报告5次报告写峰值(通常是这种情况)。原因是日志的写入速度不比磁盘快。

但是我们看到的速度是每秒数千。

这是如何运作的?

明确地说,我正在谈论每次写入都在其自己的事务中(默认用法)。我知道为什么批量插入不适用于此问题。

Answers:


1

写入WAL时,提交将排队并且所有刷新。

因此,您将获得大量的提交,这些提交每秒写入5次。


我知道这部分。但是我在问,为什么据我所知,为什么它以“安全保存”的报告率要比不可能时更高。
IamIC 2014年

测量发出commit命令和使其返回之间的延迟。这将平均是您的沃尔玛作家延迟的一半,并且分配得相当平均。因为提交正在排队。您的错误是假设沃尔玛作家醒来时只能写一条记录。事实并非如此。
Craig Ringer 2014年

我知道WAL作家醒来时可以写成千上万。如果我运行来自C#或Delphi的插入循环,则它将每秒返回数千次。这是我不了解的部分。
IamIC 2014年

请参阅上一则评论。测量每次提交花费的时间。应该是avg wal writer delay /2。如果未显示您自己的可运行测试代码,请完整pg config和测试运行日志。
Craig Ringer 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.