![DevStudio System Performance](https://demo5-academy.pega.com/sites/default/files/styles/1024/public/media/images/2021-09/SystemPerformance.png?itok=OWgKgEsr)
Diagnóstico de problemas con bases de datos
Database issues can impact application performance. Often, it is the manner in which the database is accessed and used that causes performance issues. To find the root cause of a database performance issue, analyze data access patterns and transactional boundaries for how they affect your data models.
For example, performance issues might be caused by:
- Database table size.
- Too many indexes.
- Reading a BLOB.
- Poorly written SQL statements and queries.
Database related performance issues may have multiple causes. A mobile app, with many resolved cases, that performs a non-case-sensitive query on a case-sensitive field has a large table size and a poorly written query.
Nota: As a best practice, create indexes on key data columns to support your application design.
Check your knowledge with the following interaction:
Diagnóstico de los problemas de bases de datos
Los problemas de bases de datos pueden redundar en un rendimiento lento de la aplicación. Antes de diagnosticar los problemas de bases de datos, es necesario obtener datos específicos sobre los síntomas. Pídale al usuario que reporta un rendimiento lento que describa las circunstancias anteriores a la ralentización. Por ejemplo, es posible que los usuarios experimenten un rendimiento lento al abrir un formulario para gestionar una llamada de un cliente, pero que la ralentización no se perciba en otros procesos.
Diagnostique los problemas de bases de datos usando las herramientas de rendimiento que están disponibles en Dev Studio.
Nota: Consulte a un administrador de bases de datos (DBA) antes de alterar el esquema de la base de datos exponiendo propiedades o creando nuevas tablas de base de datos y moviendo de lugar los registros.
Diagnóstico de problemas con Performance Analyzer (PAL)
Para diagnosticar problemas de rendimiento a causa de problemas de bases de datos, seleccione Configure > System > Performance > Performance Analyzer (PAL) (Configurar > Sistema > Rendimiento > Analizador de Rendimiento (PAL)). Al ejecutar PAL y realizar lecturas progresivas de cada formulario, puede identificar en qué parte del proceso ocurre el problema y luego profundizar en los resúmenes del paso.
También puede verificar el reporte My Performance Details del usuario que experimenta el problema. El reporte My Performance Details (Detalles sobre mi rendimiento) ofrece una captura similar a PAL de lo que le sucedió a un usuario específico durante una sesión. El reporte está disponible haciendo clic en Configure > System > Performance > My Performance Details (Configurar > Sistema > Rendimiento > Mis detalles de rendimiento). En el reporte, cambie el Id. de operador para visualizar los datos de la sesión del usuario correspondiente.
En la imagen siguiente, que muestra la vista FULL del Requestor Performance Analyzer, haga clic en los íconos + para visualizar los tipos de información que puede usar para identificar posibles problemas de rendimiento.
Nota: Para obtener más información sobre Snapshot de PAL, consulte Utilización de la visualización de detalles completos de Performance Analyzer.
Visualice las estadísticas del rendimiento en contexto. Considere con cuánta frecuencia y en qué circunstancias sucede el problema. Por ejemplo, 45 solicitudes que superan un umbral en un grupo de 10.000 interacciones es menos significativo que 45 solicitudes que superan un umbral en un grupo de 70.
La siguiente imagen muestra un ejemplo del resumen del solicitante en la Snapshot de detalles sobre PAL. Observe la cantidad de interacciones con el servidor, el umbral de tiempo de la base de datos y la cantidad de solicitudes de bases de datos que superan el umbral de tiempo. En este ejemplo, cerca del 1 % de las solicitudes de bases de datos superaron el umbral de tiempo.
Nota: Existe una alerta para cada violación del umbral. Las alertas ofrecen una notificación de las violaciones, pero no siempre especifican la causa.
Diagnóstico de problemas con rastreo de la base de datos
También puede utilizar Database Trace para examinar una consulta realizada a una base de datos. Por ejemplo, en Dev Studio, haga clic en Configure > System > Performance > Database Trace (Configurar > Sistema > Rendimiento > Rastreo de la base de datos). y luego ordene los resultados por operación readBlob para identificar las operaciones que leen datos desde un BLOB. Recuerde observar las reglas en los rulesets de la aplicación para asegurarse de que se haga referencia a la regla correcta.
La siguiente imagen muestra los resultados de un rastreo de la base de datos que muestra todas las operaciones readBlob .
Prácticas recomendadas para abordar los problemas
Las pruebas de rendimiento frecuentes permiten resolver problemas de manera temprana en función de los resultados de su diagnóstico. Revise los detalles para ajustar el rendimiento en función del tipo de problema que encuentre.
Problemas de tabla de base de datos extensa
Las tablas de base de datos extensas afectan el rendimiento debido a su gran volumen. Cuanto más grande sea la tabla de base de datos, más se tardará en acceder a los datos desde la base de datos. Por ejemplo, una empresa de seguros procesa cientos de reclamos al día. El grupo de casos de reclamos resueltos crece de manera sustancial. En un período de un año, los trabajadores de casos experimentan un tiempo de respuesta más lento de lo normal al buscar casos abiertos.
Algunas opciones para abordar las tablas de base de datos extensas:
- Crear registros de tablas de base de datos para una o más clases en el grupo de clase si la tabla mapea a un grupo de clase. Por ejemplo, una aplicación crea cinco tipos de casos. La mitad de los casos creados pertenecen a un único tipo de caso. La asignación de una tabla de base de datos diferente para los tipos de casos más frecuentes reduce el ritmo al que crece la tabla del grupo de clase. Para obtener más información acerca de los grupos de clase, consulte Trabajar con grupos de clase.
- Cree un registro de tablas de base de datos para mapear las instancias de una o más clases específicas a una tabla diferente si la tabla es
pr_other
. Luego mueva las instancias de clase desdepr_other
hasta la tabla adecuada. Usar la tablapr_other
dispara una alerta PEGA0041 y una advertencia de contención y se aborda mejor durante el desarrollo. - Permitir la paginación en los reportes de lista para mejorar el rendimiento de los reportes. La paginación limita la cantidad de resultados que muestra un reporte de lista al tamaño de página especificado que configure. La paginación también reduce el tamaño del portapapeles y el tiempo necesario para mostrar cada página de resultados. Los usuarios pueden pasar a la página siguiente para ver más resultados.
- Indexe las columnas de datos clave.
- Archive los datos que ya no son necesarios.
Problemas de BLOB que afectan el tamaño de la base de datos
Las lecturas desde un BLOB afectan el rendimiento, ya que requieren que la aplicación utilice memoria para descomprimir un BLOB y extraer los datos necesarios. Las solicitudes que requieren que la aplicación lea un BLOB completo, lo descomprima, extraiga la propiedad requerida y luego lo descarte toman más tiempo que las solicitudes que leen el valor desde una columna en la tabla de base de datos.
Por ejemplo, una página de datos podría obtener datos utilizando una definición de reportes que realiza una consulta a la base de datos para obtener una lista de valores que se muestran en una lista desplegable. Leer datos almacenados en un BLOB puede ocasionar tiempos de consulta que superen los umbrales de rendimiento establecidos y disparen alertas de rendimiento como PEGA0005: Query time exceeds limit.
Al abordar un problema relacionado con un BLOB, el primer paso es determinar si necesita exponerse una propiedad en su propia columna. Evite exponer las propiedades hasta que haya evaluado el impacto que tendrá en el rendimiento la lectura desde un BLOB. El uso de un BLOB reduce el tamaño de las filas de las tablas comprimiendo los datos no expuestos. La exposición de las propiedades cuando no hay necesidad puede aumentar el tamaño de las tablas de base de datos.
Problemas de consultas de SQL
Las consultas mal escritas afectan el rendimiento porque obligan a que Pega Platform™ lea los elementos desde la base de datos sin que esto sea necesario. Las consultas mal escritas tienden a ocurrir en los conectores o reportes de SQL (por ejemplo, una regla de SQL que realiza una consulta con diferenciación innecesaria de mayúsculas y minúsculas).
Si el rastreo de la base de datos reporta que una consulta en particular está tardando demasiado tiempo, observe la formulación de la consulta de SQL. Copie la consulta desde los datos del rastreo de la base de datos, junto con los valores de sustitución, y use las herramientas nativas para que la base de datos analice la consulta y busque maneras de optimizarla.
Consulte la siguiente tabla para ver soluciones a posibles problemas.
Problema posible | Solución posible |
---|---|
Una consulta de SQL que usa una condición |
Considere una condición menos costosa, como comienza con. |
La consulta de SQL insert contiene update afirmaciones o |
Investigue la optimización de almacenamiento. |
Índices innecesarios | Demasiados índices pueden disminuir las afirmaciones de inserción/actualización y empeorar el rendimiento. Asegúrese de que los índices sean necesarios. |
La consulta de SQL une dos tablas | Mejore el rendimiento creando una regla Rule-Declare-Index, que mantiene automáticamente las instancias de índices para un acceso más rápido. Para obtener más información sobre las reglas Declare Index, consulte Acerca de las reglas Declare Index. |
Tiempo de respuesta de las consultas | Asegúrese de que los tiempos de respuesta de las consultas a la base de datos concuerden con el acuerdo de nivel de servicio (SLA) que se define en las alertas de Pega Platform y ajústelos si es necesario. Busque también otras alertas relacionadas con la base de datos en Predictive Diagnostic Cloud (PDC). Para obtener más información sobre PDC, consulte Iniciar sesión en Pega Predictive Diagnostic Cloud. |
Columna de datos | Asegúrese de que la consulta a la base de datos recupere los datos a partir de las columnas correctas y no más de las columnas requeridas. |
Múltiples ejecuciones | Asegúrese de que la misma consulta a la base de datos no se ejecute muchas veces ni se repita más de lo necesario. Puede verificar esto haciendo un seguimiento del recuento de ejecuciones en las lecturas de PDC o PAL. |
Nota: Una práctica recomendada es encontrar las consultas más complejas, en términos de tiempos de respuesta (RDB I/O Elapsed) y recuentos (RDB I/O Count) y abordarlas.
Tamaño del portapapeles
Una de las causas de los problemas de rendimiento son las tablas de base de datos extensas que afectan el portapapeles. Un tamaño extenso en el portapapeles afecta negativamente el rendimiento porque la memoria en Pega Platform conserva los portapapeles de todos los solicitantes. La paginación limita la cantidad de resultados que muestra un reporte de lista a la página del portapapeles especificada que se configure. La paginación reduce el tamaño del portapapeles y el tiempo necesario para mostrar cada página de resultados del portapapeles. La paginación requiere que los usuarios pasen a la página siguiente para ver más resultados.
- Asegúrese de que, para un usuario final, el tamaño del solicitante se mantenga dentro de un límite aceptable. Los tamaños del portapapeles que superen los 5 MB se deben analizar para garantizar que todos los datos recuperados sean necesarios.
- Asegúrese de que se eliminen las páginas de datos obsoletas y fallidas, se limpie la memoria con regularidad y se busquen pérdidas de memoria.
- Analice las páginas de datos pesadas en los solicitantes y los hilos y reduzca su huella digital si es posible.
- Controle y ajuste el número de solicitantes en el grupo de solicitantes en lote.
Use los detalles del rendimiento para ver el tamaño del portapapeles y supervisar el uso de la memoria en el tiempo.
Nota: Para cambiar el número de solicitantes en el grupo, use la configuración agent/threadpoolsize en el archivo prconfig.xml o la DSS. Supervise también las páginas de nivel de hilo para asegurarse de limitar el uso del portapapeles a los datos requeridos únicamente.
Archivado
En una aplicación de producción, el volumen de datos de casos puede crecer hasta requerir cientos de megabytes de espacio de almacenamiento en la base de datos. Puede habilitar el archivado de casos para mover los casos inactivos al almacenamiento secundario. Para archivar casos, Pega Platform usa distintos trabajos que se configuran con programadores de trabajos para copiar, indexar y limpiar artefactos específicos en casos independientes y en jerarquías de casos. Puede archivar los siguientes artefactos para mejorar el rendimiento de las bases de datos:
- Casos hijos
- Índices declarativos
- Historial de trabajo
- Respuestas de Pulse
- Archivos adjuntos
Nota: Para obtener más información sobre la mejora del rendimiento de la base de datos, consulte Mejora del rendimiento mediante el archivado de casos. Para obtener más detalles sobre el proceso de archivado, consulte Descripción general del archivado y limpieza de casos.
Orden y limpieza
Si está usando un entorno de Pega Cloud, puede ordenar o limpiar las tablas con actividades o herramientas de consulta de SQL. La limpieza siempre se da después del archivado. Primero, establezca un sistema de archivado de destino que sea una copia (que use las mismas reglas y esquemas de datos) del sistema de producción original que está archivando. La limpieza después del archivado elimina las filas de las tablas.
Por otro lado, Pega Platform ofrece un asistente de limpieza y archivado que requiere configurar primero una actividad para definir los criterios de limpieza o archivado. Luego usted programa las actividades de limpieza o archivado. El asistente de limpieza y archivado ya no cuenta con soporte oficial. En su lugar, la práctica recomendada consiste en usar las herramientas de la base de datos de su organización para archivar y limpiar los datos de sus instancias locales.
Caution: No hay una manera sencilla de recuperar los registros eliminados, por lo que debe realizar la limpieza con cuidado. Para obtener más información sobre el proceso y los riesgos de realizar una limpieza, consulte Orden y limpieza de tablas.
Compruebe sus conocimientos con la siguiente actividad.
This Topic is available in the following Module:
If you are having problems with your training, please review the Pega Academy Support FAQs.
¿Quiere ayudarnos a mejorar este contenido?