Re: prueba de jit en postgres 11

From: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>
To: Hellmuth Vargas <hivs77(at)gmail(dot)com>
Cc: Lista Postgres ES <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: prueba de jit en postgres 11
Date: 2020-06-10 16:53:22
Message-ID: 20200610165322.GA28461@alvherre.pgsql
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Hellmuth Vargas escribió:

Hola

> Entiendo que JIT básicamente aplica para la optimización de consultas
> (diciéndolo de forma coloquiar)

Sí, la idea es que algunos pasos en la ejecución de consultas se pueden
"compilar" a código específico para esa operación específica, lo que
resulta más eficiente que ejecutar el código genérico. Pero se incurre
en un costo de hacer esa compilación. Si se va a ejecutar pocas veces,
no vale la pena hacer la compilación, porque el menor tiempo de
ejecución lo vas a perder en la compilación.

> Tengo varias preguntas:
>
> - Los datos o en general la replica puede llegar a corromperse (porque la
> master no tiene jit) o si eventualmente llega a ser master (promoviéndola),
> las replicas existentes podrían apuntar a esta?

Por diseño, las réplicas nunca escriben datos, así que aún si hubiera
un tremendo bug en el JIT no es posible que resulte en corrupción de
datos si lo ejecutas en una réplica. Por otra parte, el JIT actualmente
sólo se aplica en operaciones de lectura, no en escrituras, así que aún
si lo pusieras en el primario, no es posible que resulte en corrupción.

La única opción para que tengas un problema de ese tipo es que JIT tenga
algún bug que cause que el sistema se caiga. Esto no es imposible pero
yo no he visto reportes de que esto haya sucedido.

> - los valores por defecto de los parámetros jit_above_cost,
> jit_inline_above_cost y jit_optimize_above_cost son altos, en general no
> se encuentra mucha información para la configuración de estos, que valores
> deberían establecerse (por criterios como RAM, o CPU o tipo de disco duro,
> etc como se hacer con otros parámetros).. o debo tomar algunas de las
> consultas pesadas y empezar a jugar con estos?

Sí, experimentar es lo mejor. Piensa que el tiempo de compilación es de
unos cuantos cientos de milisegundos, así que una consulta rápida no se
verá beneficiada.

Las operaciones que actualmente se optimizan son:

1. "deforming" de tuplas (es decir, convertir la representación "muchos
bytes en disco" de una tupla separándola en los valores de cada columna)

2. ejecución de expresiones (es decir, tomar cosas como "columna + 10"
y convertirla en código nativo de CPU que ejecuta la suma de dos
valores donde uno es constante y el otro se lee de la tupla)

--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2020-06-10 16:58:37 Re: Cambio de servidor primario
Previous Message Oscar Polo Fdez 2020-06-09 13:27:30 RE: conectar con sql server