Saltar al contenido

¿Cómo obtener la última fecha de acceso/modificación de una base de datos PostgreSQL?

Si encuentras alguna parte que te causa duda puedes dejarlo en la sección de comentarios y te responderemos tan rápido como podamos.

Solución:

Puede hacerlo comprobando la hora de la última modificación del archivo de la tabla. En postgresql, cada tabla corresponde a uno o más archivos OS, así:

select relfilenode from pg_class where relname = 'test';

el relfilenode es el nombre de archivo de la tabla “prueba”. Entonces podría encontrar el archivo en el directorio de la base de datos.

en mi entorno de prueba:

cd /data/pgdata/base/18976

ls -l -t | head

el último comando significa enumerar todos los archivos ordenados por hora de última modificación.

No hay una forma integrada de hacer esto, y todos los enfoques que verifican el archivo mtime descritos en otras respuestas aquí son incorrectos. La única opción confiable es agregar disparadores a cada tabla que registre un cambio en una sola tabla de historial de cambios, lo cual es terriblemente ineficiente y no se puede hacer de manera retroactiva.

Si solo le interesa la “base de datos utilizada” frente a la “base de datos no utilizada”, puede recopilar esta información de los archivos de registro de la base de datos en formato CSV. Detectar “modificado” frente a “no modificado” es mucho más difícil; considerar SELECT writes_to_some_table(...).

Si no necesita detectar antiguo actividad, puedes usar pg_stat_databaseque registra la actividad desde el último restablecimiento de estadísticas. p.ej:

-[ RECORD 6 ]--+------------------------------
datid          | 51160
datname        | regress
numbackends    | 0
xact_commit    | 54224
xact_rollback  | 157
blks_read      | 2591
blks_hit       | 1592931
tup_returned   | 26658392
tup_fetched    | 327541
tup_inserted   | 1664
tup_updated    | 1371
tup_deleted    | 246
conflicts      | 0
temp_files     | 0
temp_bytes     | 0
deadlocks      | 0
blk_read_time  | 0
blk_write_time | 0
stats_reset    | 2013-12-13 18:51:26.650521+08

para que pueda ver que hay posee Ha habido actividad en esta base de datos desde el último restablecimiento de estadísticas. Sin embargo, no sé nada sobre lo que sucedió antes de que se restablecieran las estadísticas, por lo que si tuviera una base de datos que mostrara cero actividad desde que se restablecieron las estadísticas hace media hora, no sabría nada útil.

PostgreSQL 9.5 nos permite rastrear la última confirmación modificada.

  1. Verifique que la confirmación de la pista esté activada o desactivada usando la siguiente consulta

    show track_commit_timestamp;
    
  2. Si devuelve “ON”, vaya al paso 3; de lo contrario, modifique postgresql.conf

    cd /etc/postgresql/9.5/main/
    vi postgresql.conf
    

    Cambio

    track_commit_timestamp = off
    

    para

    track_commit_timestamp = on
    

    Reinicie el postgres/sistema

    Repita el paso 1.

  3. Use la siguiente consulta para rastrear la última confirmación

    SELECT pg_xact_commit_timestamp(xmin), * FROM  YOUR_TABLE_NAME;
    
    SELECT pg_xact_commit_timestamp(xmin), * FROM YOUR_TABLE_NAME where COLUMN_NAME=VALUE;
    
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *