¿Cuál es el significado de n_live_tup y n_dead_tup en pg_stat_user_tables

20

¿Cuál es el significado de n_live_tupy n_dead_tupen pg_stat_user_tableso pgstattuple?

Majid Azimi
fuente

Respuestas:

28

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 INSERTso UPDATEs (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 VACUUMsi 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.confsi desea que se actualicen automáticamente. track_countsSin 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 .

Erwin Brandstetter
fuente
¿Qué son las tuplas solo de montón? Cuando publico SELECT n_live_tup FROM pg_stat_user_tables WHEN relname = 'mytable';¿Por qué muestra cero? mytableTiene 6 filas.
Majid Azimi
@MajidAzimi: agregué un poco a mi respuesta.
Erwin Brandstetter
55
@MajidAzimi Si quieres aprender un montón sobre MVCC y HoT, mira
dbenhur
@dbenhur: ¡Buen enlace! La presentación está muy bien hecha y es fácil de entender.
Erwin Brandstetter
@dbenhur El enlace parece estar muerto ahora.
Aryeh Leib Taurog