Come posso trovare il tempo di creazione della tabella in Postgresql.PostgreSQL: tempo di creazione tabella
Esempio,
Se ho creato un file posso trovare il tempo di creazione del file come quello che voglio sapere l'ora di creazione tabella.
Come posso trovare il tempo di creazione della tabella in Postgresql.PostgreSQL: tempo di creazione tabella
Esempio,
Se ho creato un file posso trovare il tempo di creazione del file come quello che voglio sapere l'ora di creazione tabella.
Ho dato un'occhiata alle tabelle pg_ * e non sono riuscito a trovare i tempi di creazione. È possibile individuare i file di tabella, ma su Linux non è possibile ottenere il tempo di creazione del file. Quindi penso che la risposta è che si può solo trovare queste informazioni su Windows, utilizzando le seguenti operazioni:
select datname, datdba from pg_database;
select relname, relfilenode from pg_class;
<PostgreSQL folder>/main/base/<database id>/<table filenode id>
(non so cosa sia su Windows).Non penso sia possibile in PostgreSQL, ma probabilmente lo troverai nel tempo di creazione del file della tabella sottostante.
Non è possibile - l'informazione non è registrata da nessuna parte. Guardare i file della tabella non ti darà necessariamente le informazioni giuste - ci sono operazioni da tavolo che creeranno un nuovo file per te, nel qual caso la data verrebbe ripristinata.
È possibile ottenere questo da pg_stat_last_operation. Ecco come fare:
select * from pg_stat_last_operation where objid = 'table_name'::regclass order by statime;
negozi Questa tabella seguenti operazioni:
select distinct staactionname from pg_stat_last_operation;
staactionname
---------------
ALTER
ANALYZE
CREATE
PARTITION
PRIVILEGE
VACUUM
(6 rows)
ERRORE: "pg_stat_last_operation non esiste", sto usando pg9.2.4. –
pg_stat_last_operation è Greenplum. –
Anche la tabella 'pg_stat_all_tables' potrebbe essere d'aiuto. –
--query
select pslo.stasubtype, pc.relname, pslo.statime
from pg_stat_last_operation pslo
join pg_class pc on(pc.relfilenode = pslo.objid)
and pslo.staactionname = 'CREATE'
Order By pslo.statime desc
contribuirà a realizzare i risultati desiderati
(provato su greenplum)
SELECT oid FROM pg_database WHERE datname = 'mydb';
Poi (assumendo che il oid
è 12345):
ls -l $PGDATA/base/12345/PG_VERSION
Questa soluzione presuppone che PG_VERSION
è meno probabilità di essere modificato dopo la creazione.
NB: Se PGDATA
non è definito, controllare Where does PostgreSQL store the database?
Ci sono alcune operazioni su un tavolo, come ad esempio cluster, che genereranno un nuovo file e non re-utilizzare quello vecchio. Quindi questo non è un metodo affidabile. –
@Alex Korban: completamente automatizzato qui: http://stackoverflow.com/questions/18849756/automatically-drop-tables-and-indexes-older-than-90-days/18852752#18852752 –
@Quandary: interessante, grazie . Sembra che non ci sia ancora un metodo a prova di proiettile per farlo, oltre a memorizzare te stesso. –