sql >> Base de Datos >  >> RDS >> Oracle

Rutina definida por el usuario con DBMS_STATS, Parte II

Tenía una publicación anterior sobre rutinas definidas por el usuario con DBMS_STATS. Después de investigar un poco más, determiné cómo funciona esto. Tengo algunos datos en mi base de datos que se almacenan en un tipo definido por el usuario. Si tiene un tipo definido por el usuario, puede asociar su rutina de recopilación de estadísticas definida por el usuario con la interfaz de cartucho de datos de Oracle (ODCI). La rutina ODCIStatsCollect se llama automáticamente cuando se invoca DBMS_STATS en la tabla que contiene ese tipo definido por el usuario.

En mi caso, rastreé el alto uso de la CPU en una instrucción SQL que el proveedor de aplicaciones de terceros puso en su rutina ODCIStatsCollect. En este punto, solo se convierte en un problema de ajuste de consultas. ¿Cómo podemos escribir la consulta para que use menos CPU? Después de analizar el problema, pensé que la forma más sencilla era eliminar la subconsulta y colocar los resultados en una tabla temporal global. Luego haga que el resto de la consulta se una al GTT en lugar de unirse a la propia subconsulta. Al hacerlo, el uso de la CPU se redujo drásticamente. Envié la solución al proveedor de la aplicación y estoy esperando a ver qué dicen.