Pregunta PostgreSQL: tiempo de creación de tabla


¿Cómo puedo encontrar el tiempo de creación de la tabla en Postgresql?

Ejemplo,

Si creé un archivo, puedo encontrar el tiempo de creación del archivo así, quiero saber el tiempo de creación de la tabla.


32
2018-04-05 06:20


origen


Respuestas:


Eché un vistazo a las tablas pg_ * y no pude encontrar ningún momento de creación allí. Es posible ubicar los archivos de tabla, pero luego en Linux no puede obtener la hora de creación de archivo. Así que creo que la respuesta es que solo puede encontrar esta información en Windows, utilizando los siguientes pasos:

  • obtener la identificación de la base de datos con select datname, datdba from pg_database;
  • obtener el ID de archivo filenode con select relname, relfilenode from pg_class;
  • encuentre el archivo de la tabla y busque su hora de creación; Creo que la ubicación debería ser algo así como <PostgreSQL folder>/main/base/<database id>/<table filenode id> (no estoy seguro de qué es en Windows).

14
2018-04-05 07:42



No puede - la información no está grabada en ningún lado. Ver los archivos de la tabla no necesariamente le proporcionará la información correcta: hay operaciones de tabla que crearán un nuevo archivo para usted, en cuyo caso la fecha se reiniciaría.


17
2018-04-05 09:15



No creo que sea posible desde PostgreSQL, pero probablemente lo encuentres en el momento de creación del archivo de tabla subyacente.


2
2018-04-05 06:48



Sugerido aquí:

SELECT oid FROM pg_database WHERE datname = 'mydb';

Entonces (suponiendo que oid es 12345):

ls -l $PGDATA/base/12345/PG_VERSION

Esta solución supone que PG_VERSION es el menos probable de ser modificado después de la creación.

NB: si PGDATA no está definido, verificar ¿Dónde almacena PostgreSQL la base de datos?


0
2018-05-01 21:36



Puede obtener esto desde pg_stat_last_operation. Aquí está cómo hacerlo:

select * from pg_stat_last_operation where objid = 'table_name'::regclass order by statime;

Esta tabla almacena las siguientes operaciones:

select distinct staactionname from pg_stat_last_operation;

 staactionname 
---------------
 ALTER

 ANALYZE

 CREATE

 PARTITION

 PRIVILEGE

 VACUUM
(6 rows)

-3
2017-11-07 13:51



--consulta

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 

ayudará a lograr los resultados deseados

(lo probé en greenplum)


-3