Impacto en el rendimiento de configurar PostgreSQL para registrar todas las declaraciones

8

PostgreSQL 9.2.2 en Windows 7 de 64 bits.

La configuración log_statementen el postgresql.confarchivo especifica qué declaraciones registrar (ninguna, DDL, modificación de datos o todas). ¿En qué medida la configuración log_statement = 'all'degrada el rendimiento? He leído que esto reduce significativamente el rendimiento, pero estas afirmaciones provienen de artículos más antiguos, entonces, ¿hasta qué punto de una pérdida de rendimiento debo esperar en relación log_statement = 'none'?

bwDraco
fuente

Respuestas:

12

Como casi todo lo demás, depende de su hardware, configuración y carga de trabajo.

Si está ejecutando pocas declaraciones costosas, hará poca diferencia; Si está ejecutando un montón de pequeñas declaraciones simples hará más diferencia.

Si sus registros están en el mismo sistema de archivos o incluso en el mismo disco que la base de datos, el registro hará una mayor diferencia que si los registros se almacenan en un disco separado. Aunque los registros no están explícitamente fsync()escritos y se escriben secuencialmente, todavía están compitiendo con la base de datos principal por E / S.

Más importante aún, algunos sistemas de archivos (ext3 en particular) eliminarán todos los datos cuando cualquier archivo esté fsync()'d, por lo que las escrituras de registro se acercan más a las E / S aleatorias que las E / S secuenciales y ralentizan cada confirmación. IIRC esto no es un problema en ext4 o xfs.

También dependerá de si tiene habilitado el tiempo de instrucción, el método de registro que está utilizando y más.

La mejor opción es compararlo con una simulación de su carga de trabajo real y ver.

Craig Ringer
fuente
Iniciar sesión en stderr como archivo de texto sin formato en el mismo disco. El tiempo de la declaración está deshabilitado. El recopilador de registro está habilitado. El servidor está ocasionalmente sujeto a consultas frecuentes y moderadamente complejas.
bwDraco
@DragonLord: el tiempo de la declaración hace una gran diferencia. para carga de CPU.
Erwin Brandstetter