PostgreSQL的如何找到在最后N分钟的任何变化(PostgreSQL how to find

2019-08-03 17:01发布

我正在写同步PostgreSQL和MS SQL Server数据库(并增加了在这个过渡的一些变化)的程序。 随着多万条记录,这需要很长的时间,并加载服务器非常糟糕的select * ; 它也需要更多的资源来对MS SQL服务器解析不变,记录并验证它们。

是否有任何PostgreSQL的日志,我可以分析,找出发生在最后n分钟的变化? 这将使我只选择那些我需要工作记录; 提高性能。

Answer 1:

PostgreSQL中,发现在最后n分钟改变:

PostgreSQL并不自动存储删除已添加/更新的行时间/(它会很慢下来PostgreSQL的来处理这样的时间戳,如果你不希望它)。

你必须做你自己:一个时间戳列添加到表中。 当您插入一行到表中,已经将其更新时间戳列到current_timestamp 。 当你选择行,使用过滤下来其中timestamp大于N分钟前,如下所示的select语句:

获取行,其中的时间戳比一个更大的日期:

SELECT * from yourtable 
WHERE your_timestamp_field > to_date('05 Dec 2000', 'DD Mon YYYY');

获取已在最后N分钟被更改的行:

SELECT * from yourtable 
WHERE your_timestamp_field > current_timestamp - interval '5 minutes'


Answer 2:

您可以使用一个触发这里描述为基础的方法:

http://wiki.postgresql.org/wiki/Audit_trigger

基本上每个表的变化触发可写在日志表中的一些信息的触发器。



文章来源: PostgreSQL how to find any changes in the last n-minutes