vistas procedimientos parametros funciona español ejemplos desde descargar datos crear consultas con como comandos cero aprender almacenados postgresql

procedimientos - postgresql español



PostgreSQL: tiempo de creación de tabla (6)

¿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.


--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)


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 el ID de la base de datos con select datname, datdba from pg_database;
  • obtener el id. de archivo nombrede archivo 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).

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


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.


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)


Sugerido aquí :

SELECT oid FROM pg_database WHERE datname = ''mydb'';

Entonces (suponiendo que el oid es 12345):

ls -l $PGDATA/base/12345/PG_VERSION

Esta solución supone que PG_VERSION es la menos probable que se modifique después de la creación.

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