PostgreSQL 9: ¿Aspira una tabla en la réplica primaria en el espejo?

18

Ejecución de PostgreSQL 9.0.1, con la replicación de transmisión manteniendo actualizada una instancia espejo de solo lectura. El vacío automático está activado en el primario, a excepción de algunas tablas que no son aspiradas por el demonio de vacío automático, en un esfuerzo por reducir la E / S en horario comercial. Estas tablas son "vistas materializadas".

Cada noche a la medianoche, ejecutamos un vacío en la base de datos para limpiar las tablas que están excluidas del vacío automático. Me pregunto si ese proceso se replica en el espejo, o si también necesito configurar el vacío en el espejo.

Scott Herbert
fuente
1
Excelente pregunta La replicación de transmisión utiliza el registro de escritura anticipada, por lo que se reduce a si los cambios que realiza VACUUM se registran o no.
DerfK
1
Curiosamente, he activado el vacío automático en el espejo de solo lectura, pero mirando las estadísticas de la tabla, parece que nunca se ha ejecutado; como todas las tablas enumeran 0 tuplas vivas / muertas, y no hay historias visibles de vacíos o análisis.
Scott Herbert
developer.postgresql.org/pgdocs/postgres/hot-standby.html - 25.5.2. Manejo de conflictos de consulta: "La aplicación de un registro de limpieza de vacío de WAL entra en conflicto con las transacciones en espera cuyas instantáneas aún pueden" ver "cualquiera de las filas que se eliminarán ............. Esto parece sugerir que VACÍO está registrado en WAL, y por lo tanto es un "sí" a mi pregunta. ¡Sin embargo, me encantaría obtener más información de un gurú de PG!
Scott Herbert
Se espera que los datos de las vistas dinámicas sean diferentes en el primario frente al en espera. Estas vistas utilizan funciones del sistema para recopilar los datos, y esas funciones leen los datos de estructuras de datos en memoria en lugar de una tabla física. Por ejemplo, realizar un ANALYZE en primario actualizará las estadísticas del optimizador (utilizadas para la planificación de consultas) también en el modo de espera, pero el tiempo que se realizó ANALYZE en la tabla no se reflejará en pg_stat_user_tables ya que esa información no se registra en la transacción troncos
Gurjeet Singh
Entonces, la conclusión es que el AUTOVACUUM que ocurre en el maestro no tiene ningún efecto en que se ejecute en el esclavo, ¿correcto? Suponiendo que este sea el caso, si tengo una tabla que NO tiene actualizaciones / eliminaciones, solo inserta, sería factible desactivar el vacío automático en el maestro, ya que solo estoy escribiendo en él, y las lecturas suceden en el esclavo.
Henley Chiu

Respuestas:

16

El vacío y el vacío automático se replican como cualquier otra operación de escritura. (Bueno, obviamente son algo especiales internamente, pero en lo que respecta a su pregunta, son operaciones de escritura normales). Ejecutar vacío o autovacío en el esclavo no hace nada y no es necesario.

Peter Eisentraut
fuente