我正在編寫一個程序來同步PostgreSQL和MS SQL服務器數據庫(並在此轉換中添加一些更改)。數百萬條記錄需要很長時間,並且使用select *
加載服務器非常糟糕;它也需要更多的資源來解析不變的記錄並根據MS SQL服務器進行驗證。PostgreSQL如何在最後n分鐘內找到任何更改
PostgreSQL中是否有任何日誌可以解析以找出最近n分鐘發生的更改?這將允許我只選擇那些我需要工作的記錄;提高性能。
我正在編寫一個程序來同步PostgreSQL和MS SQL服務器數據庫(並在此轉換中添加一些更改)。數百萬條記錄需要很長時間,並且使用select *
加載服務器非常糟糕;它也需要更多的資源來解析不變的記錄並根據MS SQL服務器進行驗證。PostgreSQL如何在最後n分鐘內找到任何更改
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'
好的,插入可以用時間戳來處理,那麼編輯呢? – Andrew
編輯表格時,可以更新同一時間戳,也可以創建一個名爲「date_updated」的附加列,並在更新行時將該列標記爲當前時間。隨時關注時區更改,夏令時和其他惡作劇。 –
你有沒有考慮[xmin](http://dba.stackexchange.com/a/5173/1396)? – 2012-12-07 17:59:30
如何使用'xmin'從表格中獲取已更改的記錄(如果表格有100萬條記錄?) – Andrew
http://www.sqlfiddle.com/#!1/58507/2 – 2012-12-07 18:34:19