Un tip sobre como configurar PostgreSQL para encontrar aquellos queries que en Odoo tardan demasiado. Primero ingresen a psql para ver la configuración del parámetro log_min_duration_statement. Si ejecutan el siguiente query:
select * from pg_settings where name like '%log_min_duration_statement%';
El cual nos mostrará la configuración del parámetro log_min_duration_statement
El parámetro log_min_duration_statement nos permite registrar en el archivo de log de PostgreSQL los queries que superan una duración determinada. Puede tener los siguientes valores:
- -1: no loguea ningún query
- 0: loguea todos los queries
- valor numérico superior a cero: en milisegundos. :Loguea los queries cuya duración supera la cantidad indicada en el parámetro. Por ejemplo si se especifica 500 se registrarán todos los queries que superan los 500 ms de ejecución
Vamos ahora a indicarle a la base de datos que nos loguee la duración de aquellos queries que superan los 200 ms (un buen sistema de Odoo no debería tener queries que superen los 100ms). En psql deberían hacer:
alter system set log_min_duration_statement = 200;
SELECT pg_reload_conf();
Lo que modifica la configuración del sistema y recarga la misma (sin necesidad de reiniciar la base de datos. Ese detalle es más que interesante).
Ahora podemos usar Odoo durante un buen rato. Luego podemos revisar los contenidos del archivo de log y veremos cosas como
Donde podemos observar un query que duró más de medio segundo y que es candidato de ser optimizado.