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