大数据加载期间检查点的问题?

时间:2011-06-21 15:38:36

标签: postgresql

这是关于PostgreSQL如何工作的问题。在使用“COPY”命令进行大型数据加载期间,我看到多个检查点发生在100%的日志文件(checkpoint_segments)被回收的地方。

我猜,我不明白这一点。当单个事务需要比可用日志文件更多的空间时,pgsql会做什么?它似乎是在这个负载过程中多次绕回,这是一个单一的事务。我错过了什么?

一切正常,我只是想更好地理解它,以防我可以调整等等。

1 个答案:

答案 0 :(得分:1)

当检查点发生时,所有脏页都写入磁盘。由于这些页面不再丢失,因此不再需要日志,因此可以节省回收。将脏页写入磁盘并不意味着此数据已提交。 db可以从存储在每行中的元数据中看到它属于尚未提交的事务,并且它仍然可以中止此事务,在这种情况下,vacuum将最终清理这些行。

当加载大量数据时,建议暂时增加checkpoint_segments