¿Cuál es el significado de n_live_tup
y n_dead_tup
en pg_stat_user_tables
o pgstattuple
?
¿Cuál es el significado de n_live_tup
y n_dead_tup
en pg_stat_user_tables
o pgstattuple
?
Respuestas:
Esas dos columnas son el resultado de
SELECT pg_stat_get_live_tuples(c.oid) AS n_live_tup
, pg_stat_get_dead_tuples(c.oid) AS n_dead_tup
FROM pg_class c;
Representa el número de filas vivas y muertas (tuplas) en la tabla.
Encuentra esas funciones en el manual .
Las filas muertas son filas eliminadas que luego se reutilizarán para nuevas filas de INSERT
so UPDATE
s (el espacio, no los datos). Algunas filas muertas (o espacio libre reservado) pueden ser particularmente útiles para las actualizaciones CALIENTES (Tuplas de solo almacenamiento dinámico) que pueden reutilizar el espacio en la misma página de datos de manera eficiente. Más sobre CALIENTE:
O las filas muertas pueden eliminarse VACUUM FULL
(o simplemente VACUUM
si tiene suerte) o operaciones similares en la mesa, reduciendo así la tabla física en consecuencia.
Cada vez que se elimina o actualiza una fila, la versión de la fila anterior se vuelve invisible para todas las demás transacciones que comienzan después de que la transacción se ha confirmado. La fila está completamente muerta tan pronto como no haya más transacciones antiguas no confirmadas. Eso es necesario para que el modelo MVCC de PostgreSQL maneje la concurrencia.
Esas son solo estadísticas . Debe habilitar la recopilación de estadísticas postgresql.conf
si desea que se actualicen automáticamente. track_counts
Sin embargo, debería estar activado por defecto. Tenga en cuenta que las estadísticas no se actualizan instantáneamente. Lea más sobre eso en el manual .
SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';
¿Por qué muestra cero?mytable
Tiene 6 filas.