我正在写同步PostgreSQL和MS SQL Server数据库(并增加了在这个过渡的一些变化)的程序。 随着多万条记录,这需要很长的时间,并加载服务器非常糟糕的select *
; 它也需要更多的资源来对MS SQL服务器解析不变,记录并验证它们。
是否有任何PostgreSQL的日志,我可以分析,找出发生在最后n分钟的变化? 这将使我只选择那些我需要工作记录; 提高性能。
我正在写同步PostgreSQL和MS SQL Server数据库(并增加了在这个过渡的一些变化)的程序。 随着多万条记录,这需要很长的时间,并加载服务器非常糟糕的select *
; 它也需要更多的资源来对MS SQL服务器解析不变,记录并验证它们。
是否有任何PostgreSQL的日志,我可以分析,找出发生在最后n分钟的变化? 这将使我只选择那些我需要工作记录; 提高性能。
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'
您可以使用一个触发这里描述为基础的方法:
http://wiki.postgresql.org/wiki/Audit_trigger
基本上每个表的变化触发可写在日志表中的一些信息的触发器。