sql >> Databáze >  >> RDS >> PostgreSQL

Jak vypsat všechny tabulky se změnami dat za posledních 24 hodin?

Nejprve zvažte můj komentář.

Postgres do 9.4 včetně nezaznamenává časová razítka při vkládání nebo aktualizaci řádků.

V záhlaví řádků jsou některé systémové sloupce které mohou pomoci při forenzní práci. Fyzické pořadí řádků (ctid ) může být indikátorem, pokud se od té doby s tabulkou nic jiného nestalo. V jednoduchých případech jsou nové řádky připojeny k fyzickému konci tabulky při vkládání, takže ctid označuje, co bylo vloženo jako poslední - dokud se v tabulce nic nezmění. Postgres může libovolně přeskupit fyzické pořadí řádků, například pomocí VACUUM . Jakékoli UPDATE také zapíše novou verzi řádku, která může změnit fyzickou polohu. Nová verze nemusí být na konci tabulky. Postgres se snaží ponechat novou verzi řádku na stejné datové stránce, pokud je to možné (HORKÁ aktualizace ) ...

To znamená, že zde je jednoduchý dotaz, jak získat fyzicky poslední řádky pro danou tabulku:

SELECT ctid, *
FROM   big
ORDER  BY ctid DESC
LIMIT  10;

Související odpovědi na dba.SE s podrobnými informacemi:

ID transakce vložení xmin může být užitečné:

Pokud náhodou máte zálohu pro testovací DB zprava před incidentem to by buď nápomocný. Obnovte starý stav do samostatného schématu testovací databáze a porovnejte tabulky ...

Obvykle přidávám jeden nebo dva timestamptz sloupce do důležitých tabulek, kdy byl řádek vložen a/nebo kdy byl naposledy aktualizován. To by být pro vás právě teď nesmírně užitečný ...

Coby být skvělé i pro vás:"temporální" funkce zavedené ve standardu SQL s SQL:2011 . Ale to ještě není implementováno v Postgresu.
Na Postgres Wiki je stránka .
Existuje také neoficiální rozšíření na PGXN . Netestoval jsem to a nemůžu říct, jak daleko to je.

Postgres 9.5 zavádí funkci pro záznam časových razítek potvrzení (jako @Craig okomentoval ). Před zahájením nahrávání je nutné ručně povolit.Příručka:

A některé funkce pro práci s ním.




  1. Jak napsat dotaz v MySQL pro objekty pole JSON

  2. Transformace z řádků na sloupec z různých tabulek a různých čísel řádků (sjednocení) v MySQL verze 8.0.17 pomocí Pivot

  3. Analýza extrémně velkých souborů XML v php

  4. PostgreSQL:UPDATE znamená přesun mezi oddíly