pg_restore期间检查点的发生过于频繁


15

在PostgreSQL 9.2.2(Windows 32位)下,我有一个pg_restore命令,该命令系统地导致有关检查点频率的日志警告,例如:

LOG:  checkpoints are occurring too frequently (17 seconds apart)
HINT:  Consider increasing the configuration parameter "checkpoint_segments".

该数据库大小约为3.3 Gb,具有112个表/ 160个视图,并在大约14分钟内恢复。

这在正常情况下发生是正常的pg_restore吗?

Answers:


17

在整个数据库还原期间并不少见,因为这是一个非常大的操作。如果在正常操作期间看到此消息,请考虑将设置checkpoint_segments永久提高,就像错误消息提示一样。

您可能会麻烦checkpoint_segments在恢复之前先设置较高的值,然后再次降低它。这甚至是手册建议的内容(包括说明)

临时增加checkpoint_segments配置变量也可以使大数据加载更快。这是因为将大量数据加载到PostgreSQL中将导致检查点的发生频率比正常检查点频率(由checkpoint_timeout配置变量指定 )高。每当发生检查点时,必须将所有脏页刷新到磁盘。通过checkpoint_segments在批量数据加载期间临时增加 ,可以减少所需的检查点数量。

相关答案以及更多详细信息:

Postgres 9.5

即将发布的新版本具有更智能的方法。引用测试版发行说明

checkpoint_segmentsmin_wal_size 和替换配置参数max_wal_size(Heikki Linnakangas)

这允许分配大量的WAL文件,如果不需要则不保留它们。因此,的默认值max_wal_size 已增加到1GB

撇开:视图的数量几乎不相关,那些视图不包含任何数据,仅包含“配方”,即:查询和视图的某些属性。对于眼前的问题,基本上仅备份文件的总大小很重要。


将checkpoint_segments设置为30后,日志中将不再显示这些消息。谢谢。
塞巴斯蒂安·克莱门特
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.