Opción shared_buffers

Opción shared_buffers

Hola.

Tengo un servidor con 4 GB de RAM corriendo sobre Centos 5, con PostgreSQL 9.0.3 y MySQL 5. Estoy empleando pgbench y pgbench-tools (usando las querys: select y tpc-b) para medir el rendimiento, a medida que modifico parámetros de la configuración de PostgreSQL.

Con la configuración por defecto y la query select, obtuve los siguientes resultados:

Escala: 1, 10, 100, 1000.
Transacciones por segundo: 10000, 8800, 7500, 100.

(el nº de registros de la tabla es escala*100000)

Tras incrementar el valor de shared_buffers a 256MB (tenía 32 MB), obtuve los siguientes resultados:

Escala: 1, 10, 100, 1000.
Transacciones por segundo: 10000, 8000, 3200, 30.

Ambos benchmarks fueron lanzados con y sin autovacuum, obteniendo resultados similares, además me aseguré de que MySQL "no estorbase" en los test.

En un test previo a éstos, la configuración de las variables de memoria fue:

shared_buffers = 512 MB
maintenance_work_mem = 8MB
effective_cache_size = 1GB
work_mem = 2MB

Y obtuve también un rendimiento muy bajo con respecto a la configuración por defecto, lo que me llevó a intentar averiguar qué parámetro de la configuración era el "culpable", de ahí el segundo benchmark en el que sólo modifico shared_buffers.

No entiendo por qué cuando la escala es 100 o más, el aumento de shared_buffers provoca que el rendimiento disminuya de manera tan drástica.

Un saludo y muchas gracias de antemano. Cualquier información al respecto será bien recibida.