Reporte de novedades lento en cargos por dependencia

Hola gente. Vuelvo a la carga con el reporte de novedades.

Se que el reporte de novedades consulta sobre el esquema mapuche_auditoria, pude optimizarlo para consultar por usuario, fechas y algunas otros filtros mas pero cuando consulto por dependencia se me cuelga (probé con una dependencia chica y corrio 3 horas, no se si terminó).

Les cuento lo que hice con el filtro de usuarios por ejemplo.
mientras corría el reporte consulté la tabla pg_stat_activity y saqué la consulta que hace, creé algunos índices (por usuario y por fecha_auditoria por ejemplo) y los reportes mejoraron mucho en su rendimiento.

Cuando consulto por dependencia la consulta al ser muy larga no entra en el campo “query” de la vista pg_stat_activity así que no se cual es la consulta que hace y donde crear índices. Creé un indice por codc_uacad en la tabla mapuche_auditoria.logs_dh03 (por cargos) pero el reporte de novedades sigue tardando mucho.

Como puedo saber la consulta que se arma al consultar por dependencia y cargo únicamente?

Saludos!


repnovedades.jpg

repnovedades.png

Hola Marco,
El reporte de novedades de por si es lento, esto se debe a que va a consultar a la tabla de históricos que suele tener mucha cantidad de registros. Lo mas recomendable es consultar en una ventana de tiempo no muy grande (entre fechas).

No se a cual consulta de todas te podrás referir, yo supongo que te referís a esta consulta:

SELECT
logs_dh03.*, logs_dh03.vig_cames || ‘/’ || logs_dh03.vig_caano AS “vig_ca”, porcdedicdocente || ‘%’ AS “porcdedicdocente”, porcdedicinvestig || ‘%’ AS “porcdedicinvestig”,
porcdedicagestion || ‘%’ AS “porcdedicagestion”, porcdedicaextens || ‘%’ AS “porcdedicaextens”, porc_aplic || ‘%’ AS “porc_aplic”, logs_dh03.nro_legaj, logs_dh03.nro_cargo,
COALESCE(dh35.desc_grupo,‘’) || ’ - ’ || CASE WHEN dh35.tipo_carac = ‘P’ THEN ‘Perm.’ WHEN dh35.tipo_carac = ‘T’ THEN ‘Trans.’ END AS “desc_carac”, desc_categ, descagrup,
desctareacargo, desc_depcia, desc_regional, desc_grado, descdependesemp, desc_clasif_cargo, desc_cod_licencia, dhb2.descripcion AS “descmotivoalta”, dhb3.descripcion AS
“descmotivobaja”, dh87_estado_afip.descestadosdocs AS “descestadosdocsafip”, dh87_estado_titulo.descestadosdocs AS “descestadosdocstitulo”, dh87_estado_cv.descestadosdocs
AS “descestadosdocscv”, dh10.vcl_cargo AS “vcl_cargo”

FROM
mapuche_auditoria.logs_dh03 logs_dh03
LEFT OUTER JOIN
mapuche.dh35 dh35 ON (logs_dh03.codc_carac = dh35.codc_carac)
LEFT OUTER JOIN
mapuche.dh11 dh11 ON (logs_dh03.codc_categ = dh11.codc_categ)
LEFT OUTER JOIN
mapuche.dhc9 dhc9 ON (logs_dh03.codc_agrup = dhc9.codagrup)
LEFT OUTER JOIN
mapuche.dhd4 dhd4 ON (logs_dh03.idtareacargo = dhd4.idtareacargo)
LEFT OUTER JOIN
mapuche.depcia depcia ON (logs_dh03.codc_uacad = depcia.cod_depcia)
LEFT OUTER JOIN
mapuche.regional regional ON (logs_dh03.codc_regio = regional.cod_regional)
LEFT OUTER JOIN
mapuche.grado grado ON (logs_dh03.codc_grado = grado.cod_grado)
LEFT OUTER JOIN
mapuche.dh36 dh36 ON (logs_dh03.coddependesemp = dh36.coddependesemp)
LEFT OUTER JOIN
mapuche.dhd7 dhd7 ON (logs_dh03.cod_clasif_cargo = dhd7.cod_clasif_cargo)
LEFT OUTER JOIN
mapuche.dhd8 dhd8 ON (logs_dh03.cod_licencia = dhd8.cod_licencia)
LEFT OUTER JOIN
mapuche.dhb2 dhb2 ON (logs_dh03.motivoaltadesig = dhb2.codigo)
LEFT OUTER JOIN
mapuche.dhb3 dhb3 ON (logs_dh03.motivobajadesig = dhb3.codigo)
LEFT OUTER JOIN
mapuche.dh87 dh87_estado_afip ON (logs_dh03.chkestadoafip = dh87_estado_afip.codestadodocs)
LEFT OUTER JOIN
mapuche.dh87 dh87_estado_titulo ON (logs_dh03.chkestadotitulo = dh87_estado_titulo.codestadodocs)
LEFT OUTER JOIN
mapuche.dh87 dh87_estado_cv ON (logs_dh03.chkestadocv = dh87_estado_cv.codestadodocs)
LEFT OUTER JOIN
mapuche.dh10 dh10 ON (logs_dh03.nro_cargo = dh10.nro_cargo)

WHERE
logs_dh03.nro_legaj = ‘XXX’ AND logs_dh03.nro_cargo = ‘YYY’ AND (auditoria_fecha, auditoria_usuario) IN ( SELECT MAX(logs_dh03_2.auditoria_fecha),
logs_dh03_2.auditoria_usuario FROM mapuche_auditoria.logs_dh03 logs_dh03_2 WHERE logs_dh03_2.nro_legaj = ‘XXX’ AND logs_dh03_2.nro_cargo = ‘YYY’ AND
logs_dh03_2.auditoria_fecha::date <= ‘2017-02-15’::date

GROUP BY
logs_dh03_2.auditoria_usuario);

Seria esta?

Saludos

Exactamente esa consulta es la que me quedaba cortada cuando la consulto por pg_stat_activity. O por lo menos los primeros 256 caracteres son los mismos ja.

Como la conseguiste? Para saber donde buscar la proxima vez.

Gracias y saludos!

Hola Marco,

Para sacar la consulta me metí en el código de mapuche e imprimí la consulta.
En la versión 3.3.0 de mapuche tenes que editar el archivo que esta en {instalacion_mapuche}/toba/vendor/siu-toba/framework/php/lib/db/toba_db.php la función consultar es la que se encarga de ejecutar la consulta en la base. el problema si editas ese archivo es que cualquier consulta que caiga en la base la va a imprimir por lo que tenes q seleccionar la consulta que querés de todas las que te tira por pantalla. Tambien hay q tener cuidado y probar esto en un mapuche de desarrollo y no de producción.

Saludos
Poli

Muchas gracias!!

Ya empiezo a ver cual consulta es la que me mata el servidor.

Saludos!!