Mejora de la simultaneidad

Puede hacer un mejor uso de sus recursos y mejorar la concurrencia al comprender los efectos de los parámetros que utiliza Db2 para controlar los bloqueos

Antes de empezar

Algunos problemas de rendimiento podrían parecer problemas de bloqueo, aunque en realidad sean problemas de otra parte del sistema. Por ejemplo, la exploración de espacios de tabla de una tabla grande puede hacer que se superen tiempos de espera. De forma parecida, si hay tareas esperando o que se intercambian y la unidad de trabajo no se ha confirmado, las tareas todavía retienen bloqueos. Cuando un sistema tiene una carga alta, la contienda por los recursos de proceso, E/S y almacenamiento también produce esperas.

Por tanto, puede tener en cuenta los métodos siguientes antes de realizar acciones específicas para ajustar los bloqueos:

  • Resuelva los problemas globales de rendimiento del sistema, del subsistema y de la aplicación para asegurarse de que no solo elimina síntomas de bloqueo, sino que también corrige otros problemas de rendimiento subyacentes.
  • Reduzca el número de hebras o iniciadores.
  • Aumente la prioridad de las tareas de Db2 en el sistema.
  • Aumente la cantidad de recursos de procesador, E/S y memoria real.

Acerca de esta tarea

Es posible que no hay que hacer nada respecto a los bloqueos de Db2. Las solicitudes de bloqueo explícitas no son necesarias para evitar que aplicaciones simultáneas lean o modifiquen datos sin confirmar. Las aplicaciones adquieren bloqueos implícitos bajo el control de Db2 para conservar la integridad de los datos. Sin embargo, a veces los bloqueos pueden producir problemas de rendimiento debido a contiendas, como situaciones de suspensión, tiempo de espera excedido y punto muerto.

En ocasiones dichas situaciones se pueden impedir si se tiene en cuenta la simultaneidad al diseñar las opciones de sistema y subsistema, las bases de datos y las aplicaciones.

Procedimiento

Para lograr una simultaneidad aceptable en los subsistemas Db2, puede seguir determinadas recomendaciones básicas. Las recomendaciones que se describen aquí son puntos de partida básicos para mejorar la simultaneidad. Por tanto, puede ser necesario un análisis detallado del diseño de datos y de las aplicaciones para lograr la mejor simultaneidad posible:

  • Enlazar la mayoría de las aplicaciones con las opciones ISOLATION(CS) y CURRENTDATA(NO).
    Estas opciones permiten a Db2 liberar los bloqueos antes de tiempo y evitarlos en muchos casos.
  • Utilice el programa de utilidad REORG para mantener los datos organizados.
    Al hacerlo, se pueden impedir las solicitudes de bloqueo y desbloqueo adicionales para situaciones como, por ejemplo, actualizaciones de filas comprimidas y de longitud variable y bloqueos de liberación automática para entradas y claves de índice pseudosuprimidas. Puede habilitar la limpieza automática de entradas de índice pseudoeliminadas estableciendo el parámetro del subsistema INDEX_CLEANUP_THREADS en un valor distinto de cero.
  • Utilice LOCKSIZE ANY o PAGE como diseño predeterminado. Piense en usar LOCKSIZE ROW solo cuando las aplicaciones encuentran una contención de bloqueo significativa, incluidos puntos muertos y tiempos de espera excedidos.

    LOCKSIZE ANY es el valor por omisión para CREATE TABLESPACE. Permite a Db2 elegir el tamaño de bloqueo, y Db2 suele elegir LOCKSIZE PAGE y LOCKMAX SYSTEM para espacios de tabla no LOB/no XML. Para espacios de tabla LOB, Db2 elige LOCKSIZE LOB y LOCKMAX SYSTEM. Del mismo modo, para los espacios de tabla XML, Db2 elige LOCKSIZE XML y LOCKMAX SYSTEM.

    El bloqueo en nivel de página normalmente da como resultado menos solicitudes para bloquear y desbloquear datos para la manipulación y el acceso secuencial, lo que se traduce en una reducción del coste de CPU. El bloqueo en nivel de página también es más probable que produzca filas insertadas secuencialmente en la misma página de datos. Bloqueo a nivel de fila con MAXROWS= 1 puede sufrir bloqueos P de páginas de datos en entornos de compartición de datos. Sin embargo, el bloqueo a nivel de página, puede evitar los bloqueos P de páginas de datos cuando MAXROWS=1.

    El bloqueo en nivel de fila proporciona una mejor simultaneidad porque los bloqueos son más granulares. Sin embargo, el coste de cada solicitud de bloqueo y desbloqueo es aproximadamente el mismo para el bloqueo en nivel de página y de fila. Por lo tanto, el bloqueo en nivel de fila probablemente supondrá un coste de CPU adicional. El bloqueo a nivel de fila también puede dar como resultado más contención de retención de las páginas de datos. Es menos probable que las filas insertadas secuencialmente por medio de hebras simultáneas estén en la misma página de datos bajo un bloqueo en nivel de fila.

  • Reduzca la contención de bloqueo en el catálogo y el directorio para operaciones de definición de datos, de enlace y de programas de utilidad.
    Pueden utilizarse los siguientes métodos para reducir este tipo de contienda:
    • Reduzca el número de objetos por base de datos.
    • Agrupe las sentencias de definición de datos de la misma base de datos dentro del mismo ámbito de confirmación, excepto las sentencias de manipulación de datos, y confirme con frecuencia.
    • Asigne un ID de autorización exclusivo y una base de datos privada para cada usuario.
    • Evite utilizar sentencias LOCK TABLE y sentencias que utilicen aislamiento RR para consultar el catálogo.
  • Especifique las opciones TRACKMOD NO y MEMBER CLUSTER cuando cree espacios de tabla.
    Estas opciones pueden reducir el bloqueo físico y la contención de retención de página en páginas de mapa de espacios durante inserciones pesadas en espacios de tabla dependientes de GBP. TRACKMOD NO no se puede utilizar cuando se utilizan copias incrementales de imágenes para los espacios de tabla.
  • Utilice la opción de enlace RELEASE(DEALLOCATE) para evitar el coste de liberar y volver a adquirir bloqueos repetidamente para aplicaciones que utilizan puntos de confirmación frecuentes para un acceso repetido a los mismos espacios de tabla.
  • Utilice la opción de enlace RELEASE(COMMIT) para planes o paquetes que se utilicen con menos frecuencia para evitar un aumento excesivo del almacenamiento de agrupaciones EDM.
  • En cargas de trabajo mixtas de INSERT, UPDATE y DELETE, tenga en cuenta las opciones LOCKSIZE PAGE y MAXROWS 1 para reducir la contención de cierre de página en páginas de datos. No utilice LOCKSIZE ROW para esas cargas de trabajo mezcladas, independientemente de si se utiliza MEMBER CLUSTER.
    MAXROWS 1 solo se recomienda si se encuentran niveles altos de bloqueo o de contención de retención. Por contra, es posible que aumenten las operaciones de E/S de obtención de página y de lectura-escritura. Si se utiliza MAXROWS 1, el número de páginas necesario para contener los datos puede aumentar en tantas filas como quepan en una página. Por ejemplo, si caben 20 filas en una sola página, el resultado es un aumento de 20 veces el número de páginas utilizado. Otro resultado es una reducción significativa de la proporción de coincidencias de la agrupación de almacenamiento intermedio.

Qué hacer a continuación

En los subsistemas Db2 que son miembros de grupos de compartición de datos, se aplican recomendaciones adicionales. Para obtener información sobre cómo mejorar la concurrencia en grupos de intercambio de datos, consulte Mejorar la concurrencia en entornos de intercambio de datos.

Finalizar la información de la interfaz de programación específica del programa.