2012-12-07 10 views
10

Piszę program, który synchronizuje bazy danych PostgreSQL i MS SQL Server (i dodaje kilka zmian w tym przejściu). Z wieloma milionami rekordów, zajmuje to dużo czasu i ładuje serwer dość źle z select *; wymaga również więcej zasobów do przeanalizowania niezmienionych rekordów i sprawdzenia ich pod kątem serwera MS SQL.PostgreSQL jak znaleźć jakiekolwiek zmiany w ciągu ostatnich n-minut

Czy są jakieś dzienniki w PostgreSQL, które można przeanalizować, aby poznać zmiany, które miały miejsce w ciągu ostatnich n minut? To pozwoliłoby mi wybrać tylko te rekordy, które muszę wykonać; poprawa wydajności.

+1

Czy rozważałeś [xmin] (http://dba.stackexchange.com/a/5173/1396)? –

+0

Jak mogę użyć 'xmin', aby uzyskać zmienione rekordy z tabeli (jeśli tabela zawiera 1 milion wpisów?) – Andrew

+0

http://www.sqlfiddle.com/#!1/58507/2 –

Odpowiedz

15

PostgreSQL, znaleźć zmiany w ciągu ostatnich n minutach:

Postgresql nie automatycznie zapisywać czas, wiersze zostały dodane/zaktualizowane/usunięty (to naprawdę spowolnić dla PostgreSQL do obsługi znaczników czasu tak czy nie chciałeś tego).

Musisz to zrobić samodzielnie: Dodaj kolumnę znacznika czasu do tabeli. Po wstawieniu wiersza do tabeli zaktualizuj kolumnę znacznika czasu do current_timestamp. Podczas wybierania wiersza, użyj select, która filtruje w dół, gdzie datownik jest większa niż n minut temu, co następuje:

Get wiersze gdzie datownik jest większa niż w terminie:

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

Uzyskaj wierszy, które zostały zmienione w ciągu ostatnich n minutach:

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

OK, wkładki można załatwić z sygnaturami czasowymi, a co z edycjami? – Andrew

+1

Edytując tabelę, można zaktualizować ten sam znacznik czasu lub utworzyć dodatkową kolumnę o nazwie "data_updated", a po zaktualizowaniu wiersza oznaczyć tę kolumnę jako aktualną. Obserwowanie zmian stref czasowych, czasu letniego i innych przesiadek z czasem. –

Powiązane problemy