es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

pg_repack se está ejecutando durante una semana completa, ¿es este el comportamiento esperado?

Inicié pg_repack hace 7 días y todavía está ejecutándose. Realmente no he visto ejemplos que duren tanto en ninguna de mis búsquedas… ¿Es esto típico para mi configuración (ver detalles a continuación)? ¿Debería dejarlo continuar? ¿O debería cancelarlo? Y si lo cancelo, ¿cuál es la mejor manera de hacerlo sin causar problemas?

Mi configuración:

Se está ejecutando en postgres aurora. El tamaño total de la tabla es de aproximadamente 950GB (índices ~650GB y tamaño de la tabla ~300GB).

Estoy ejecutando pg_repack desde un cliente en pantalla en una máquina ec2 en la misma VPN como indican las instrucciones aquí:
https://aws.amazon.com/blogs/database/remove-bloat-from-amazon-aurora-and-rds-for-postgresql-with-pg_repack/

pg_repack –version = 1.4.4

El comando que utilicé fue

shell
pg_repack -h <host> -U <user> -t <tablename> -k <db>

Puedo confirmar que pg_repack aún se está ejecutando al observar los insights de rendimiento en AWS porque

sql
SELECT repack.repack_apply($1, $2, $3, $4, $5, $6)

sigue ocupando sesiones activas.

La instancia de escritura está rondando los 700-800 commits/s.

Las instancias son db.r6g.16xlarge y hay 1 escritor y 2 réplicas de lectura.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Basado en su configuración y el tamaño de su tabla, no es inusual que pg_repack tarde mucho tiempo en ejecutarse. Sin embargo, 7 días parece ser un tiempo muy largo. Antes de decidir si dejarlo continuar o cancelarlo, debe considerar algunas cosas.

    Primero, verifique el progreso de pg_repack ejecutando la siguiente consulta:

    SELECT * FROM pg_stat_progress_repack;
    

    Esto le mostrará el progreso de la operación de repack, incluido el estado actual y el tiempo estimado para completar.

    Si el progreso es muy lento o está detenido, es posible que desee cancelar pg_repack y volver a ejecutarlo con diferentes opciones. Para cancelar la operación, primero debe encontrar el ID de proceso (PID) del proceso pg_repack ejecutando:

    SELECT pid FROM pg_stat_activity WHERE query ~* 'pg_repack';
    

    Una vez que tenga el PID, puede terminar el proceso con:

    SELECT pg_cancel_backend(<pid>);
    

    Tenga cuidado al cancelar una operación de larga duración como pg_repack, ya que puede dejar su base de datos en un estado inconsistente.

    Si decide dejar que pg_repack continúe ejecutándose, supervise regularmente el progreso y asegúrese de que su base de datos no se quede sin espacio en disco. También puede intentar ajustar las opciones chunk_time y chunk_size para mejorar el rendimiento.

    En general, sea paciente y no apresure el proceso. Empacar una tabla grande puede llevar mucho tiempo, pero vale la pena para mantener su base de datos funcionando sin problemas.

Comments are closed.