将 PostgreSQL 设置为记录所有语句的性能影响

bwD*_*aco 8 postgresql performance logs postgresql-9.2

Windows 7 64 位上的 PostgreSQL 9.2.2。

设置log_statementpostgresql.conf文件中指定的语句记录哪些(无,DDL,修改数据,或全部)。设置log_statement = 'all'会在多大程度上降低性能?我读过这会显着降低性能,但这些说法来自较旧的文章,那么相对于 ,我应该期望多少性能损失log_statement = 'none'

Cra*_*ger 12

与几乎所有其他事物一样,这取决于您的硬件、配置和工作负载。

如果你只运行一些昂贵的语句,那没什么区别;如果你运行很多微小的简单语句,它会产生更大的不同。

如果您的日志与数据库位于同一个文件系统甚至同一个磁盘上,则日志记录将比将日志存储在单独的磁盘上产生更大的差异。即使日志没有明确地fsync()“d”并且是按顺序写入的,它们仍然在与主数据库竞争 I/O。

更重要的是,一些文件系统(特别是 ext3)会在任何文件被'd时刷新所有数据fsync(),因此日志写入变得更接近随机 I/O 而不是顺序 I/O,并减慢每次提交的速度。IIRC 这在 ext4 或 xfs 上不是问题。

它还取决于您是否启用了语句计时、您使用的日志记录方法等等。

最好的选择是通过模拟您的真实工作负载对其进行基准测试并查看。