db2 10 afinamiento
TRANSCRIPT
DB2 10.1 Afinamiento
Universidad Cenfotec.Curso: Afinamiento de bases de datos.Alumno: Andrés Calvo | Germán Rodríguez.
DB2 Presentaciones.
DB2
-for Z/os (mainframe).
- for i Series (midrange).
- for LUW (linux, unix, windows)
DB2 para LUW. Ediciones. DB2 Everyplace
DB2 Everyplace es más que solo una infraestructura de computación móvil.
DB2 Personal Edition DB2 Personal Edition (DB2 Personal) es un RDBMS de un
solo usuario que se ejecuta en hardware de escritorio de bajo costo.
DB2 Express-C DB2 Express - C realmente no se considera una edición
de la familia DB2, pero proporciona la mayoría de las capacidades de DB2 Express.
DB2 para LUW. Ediciones. DB2 Express-C
Una característica definitiva de DB2 Express - C es que no tiene los límites que normalmente están asociados con estos tipos de ofrecimientos por parte de otros proveedores.
DB2 Express Edition DB2 Express Edition (DB2 Express) es un RDBMS de
cliente/servidor con funciones completas y habilitado para Web.
DB2 Express proporciona un servidor de bajo costo y de nivel de entrada que está dirigido principalmente a empresas pequeñas y computación por departamentos.
DB2 para LUW. Ediciones. DB2 Workgroup Edition
DB2 Workgroup proporciona un servidor de bajo costo y de nivel de entrada que está dirigido principalmente a empresas pequeñas y computación por departamentos.
DB2 Enterprice Edidion Está disponible para todos los sabores soportados de
Linux, UNIX y Windows. DB2 Enterprise está dirigido para servidores por departamentos de tamaño grande y mediano.
DB2 para LUW. Diagnostico. Herramientas de Monitoreo.
DB2 colecciona información a nivel de:
Las bases de datos. Del manejador de bases de datos. Las aplicaciones conectadas a la base de datos.
Existen dos maneras de monitorear la base de datos:
Table Functions. Con ellas se puede ver información del estado de varios aspectos de la base de datos a un punto específico en el tiempo.
Snapshoots. Se pueden crear monitores de eventos que capturan información histórica con forme ocurren eventos específicos de base de datos.
DB2 para LUW. Table Functions. Se utilizan para coleccionar y ver información sobre
sistemas, actividades u objetos.
La información es continuamente acumulada en memoria y disponible para consulta.
Se puede filtrar datos para un objeto en específico o para todos los objetos.
La perspectiva de monitoreo del sistema abarca el volumen completo de trabajo en el servidor, desde esta perspectiva se puede determinar qué es lo que hace el servidor como un todo así como examinar solicitudes particulares de aplicaciones.
DB2 para LUW. Table Functions. Existe gran variedad de table functions, entre ellas se puede
usar las siguientes:
MON_GET_SERVICE_SUBCLASS y MON_GET_SERVICE_SUBCLASS_DETAILS
MON_GET_WORKLOAD y MON_GET_WORKLOAD_DETAILS MON_GET_CONNECTION y MON_GET_CONNECTION_DETAILS MON_GET_UNIT_OF_WORK y
MON_GET_UNIT_OF_WORK_DETAILS MON_GET_BUFFERPOOL MON_GET_TABLESPACE MON_GET_CONTAINER MON_GET_TABLE MON_GET_INDEX MON_GET_LOCKS MON_GET_APPL_LOCKWAIT
DB2 para LUW. Table Functions -> Ejemplos.
Como identificar las retinas más consumidoras de CPU:
SELECT ROUTINESCHEMA, ROUTINEMODULENAME, ROUTINENAME, SPECIFICNAME, SUM(TOTAL_CPU_TIME) AS TOTAL_CPUFROM TABLE(MON_GET_ROUTINE(NULL,NULL,NULL,NULL,-2)) AS TGROUP BY ROUTINESCHEMA, ROUTINEMODULENAME, ROUTINENAME, SPECIFICNAMEORDER BY TOTAL_CPU DESC
Investigando el rendimiento de un procedimiento almacenado llamado test.proc1.
SELECT B.EXECUTABLE_ID, 100*B.COORD_STMT_EXEC_TIME / A.TOTAL_ROUTINE_COORD_EXEC_TIME AS PERCENT_EXEC_TIME,(SELECT SUBSTR(C.STMT_TEXT,1,120)FROM TABLE(MON_GET_PKG_CACHE_STMT(NULL,B.EXECUTABLE_ID,NULL,-2)) AS C) AS STMT_TEXTFROM TABLE(MON_GET_ROUTINE('P','TEST',NULL,'PROC1', -2)) AS A, TABLE(MON_GET_ROUTINE_EXEC_LIST('P','TEST',NULL,'PROC1', -1)) AS BWHERE A.TOTAL_ROUTINE_COORD_EXEC_TIME<>0ORDER BY PERCENT_EXEC_TIME DESC
DB2 para LUW. Snapshot monitors.
Se pueden usar snapshots monitors para capturar información sobre la base de datos y para cualquier aplicación conectada a un tiempo especifico.
Son muy utilices para determinar el estado del sistema de base
de datos.
También se pueden tomar periódicamente en intervalos regulares para observar tendencias y prever problemas potenciales.
Existen varios tipos de snapshots disponibles, cada uno de ellos retornando información de monitoreo especifica, por ejemplo se pueden capturar snapshots que retornen solo información del buffer pool, o por ejemplo información del manejador de bases de datos.
DB2 para LUW. Snapshot monitors.
Se pueden accesar de las siguientes dos formas:
Vistas administrativas: Un snapshot de información de aplicación para la base de
datos SAMPLE. SELECT * FROM SYSIBMADM.SNAPAPPL
Un snapshot para obtener información de bloqueo para la base de datos actual seria así:▪ SELECT * FROM SYSIBMADM.SNAPLOCK
Table function: Por ejemplo para capturar información de bloqueo de la base
de datos SAMPLE se ejecutaría la siguiente instrucción: ▪ SELECT * FROM TABLE(SNAP_GET_LOCK('SAMPLE',-1)) AS SNAPLOCK
DB2 para LUW. Workload Management (WLM).
WLM le permite a DB2 poder maximizar el uso de los recursos de hardware disponibles en el servidor donde se encuentre instalado para obtener un óptimo desempeño del servicio.
Definición de objetivos, ejemplos: Las consultas provenientes de una aplicación en
particular no pueden consumir más de un 10% del CPU.
Que una cierta una utilidad batch ejecutada en la noche debe estar lista antes de determinada hora de la madrugada.
DB2 para LUW. Workload Management (WLM) -> Etapas.
Identificación de la carga de trabajo. Se debe saber los detalles sobre la carga, sobre todo el origen de la carga, por ejemplo saber la aplicación que genera la carga, el usuario que la genera, etc.
Manejo de la carga. Esta fase requiere de tener mecanismos para lograr la meta y de acciones definidas en caso en que la meta no esté siendo alcanzada. En esta etapa existen los llamados “service class”, que definen el ambiente de ejecución sobre el que la carga puede correr. Los service class incluyen recursos disponibles y umbrales de ejecución.
Monitoreo. El monitoreo es importante porque es por medio de este que logramos saber si estamos cumpliendo con los objetivos. Asi mismo por medio de monitoreo el motor puede saber si problemas presentes pueden afectar el logro de un objetivo.
DB2 para LUW. Workload Management (WLM).
DB2 para LUW. Design Advisor.
Esta herramienta contribuye significativamente en el mejoramiento del rendimiento de la carga de trabajo del servidor.
Seleccionar cuales índices, MQTs, dimensiones clúster o particiones de base de datos deben existir para una carga de trabajo grande puede ser compleja.
El design advisor identifica todos los objetos que son necesarios para mejorar el rendimiento de la carga de trabajo.
Dado una traza de la carga de trabajo esta herramienta genera recomendaciones para:
Incluir nuevos índices. Incluir nuevos índices clúster. Nuevas MQTs. (materialized query tables). Redistribution de tablas.
DB2 para LUW. Design Advisor.
DB2 para LUW. Consideraciones en configuración inicial.
Requisitos de Disco El espacio de disco necesario para el producto
depende del tipo de instalación que se elija y del tipo de sistema de archivos de que se disponga.
El Asistente de instalación de DB2 proporciona estimaciones de tamaño dinámicas basadas en los componentes seleccionados durante una instalación típica, compacta o personalizada.
En sistemas operativos Linux y UNIX, se recomienda disponer de 2 GB de espacio libre en el directorio /tmp.
DB2 para LUW. Consideraciones en configuración inicial.
Requisitos de Memoria Los requisitos de memoria se ven afectados por el
tamaño y la complejidad del sistema de bases de datos y la magnitud de la actividad de la base de datos y el número de clientes que acceden al sistema.
Como mínimo, un sistema de base de datos DB2 requiere 256 MB de RAM1.
Para un sistema que sólo ejecute un producto DB2 y las herramientas de la GUI de DB2 se requieren 512 MB de RAM como mínimo.
DB2 para LUW. Consideraciones en configuración inicial.
Requisitos de Espacio de Paginacion DB2 requiere que se habilite la
paginación, también denominada intercambio.
Esta configuración es necesaria para dar soporte a varias funciones de DB2 que supervisan o dependen del conocimiento de la utilización de espacio de intercambio/paginación.
DB2 para LUW. Consideraciones en configuración inicial.
Información preliminar sobre las autorizaciones para BD
Las autorizaciones proporcionan una forma de agrupar privilegios y de controlar las operaciones de mantenimiento y de programa de utilidad para las instancias, las bases de datos y los objetos de base de datos.
DB2 para LUW. Consideraciones en configuración inicial.
Información preliminar sobre las autorizaciones para BD SYSADM ▪ Es el nivel más alto de autorización administrativa.▪ Incluye todos los privilegios sobre las BD de la instancia
de DB2 así como la autorización para otorgar y revocar todas las demás autorizaciones y privilegios.
DBADM▪ Proporciona autorización administrativa para una base
de datos específica.▪ Permite al usuario acceder y modificar todos los objetos
de esa base de datos.
DB2 para LUW. Consideraciones en configuración inicial.
Información preliminar sobre las autorizaciones para BD SYSCTRL ▪ Es la autorización para controlar los recursos utilizados
por el gestor de bases de datos (por ejemplo, crear y suprimir bases de datos).
▪ No permite acceder a los datos de la base de datos.
SYSMAINT▪ Es la autorización para realizar operaciones de
mantenimiento como, por ejemplo, iniciar y detener el servidor DB2 y hacer copia de seguridad y restaurar bases de datos.
DB2 para LUW. Consideraciones en configuración inicial.
Información preliminar sobre las autorizaciones para BD LOAD ▪ La autorización LOAD en el nivel de base de datos,
combinada con el privilegio INSERT de una tabla, permite al usuario cargar datos en esa tabla.
SECADM(security administrator)▪ Se aplica a nivel de base de datos y es la autorización
necesaria para crear, modificar y eliminar componentes de etiquetas de seguridad, políticas de seguridad y etiquetas de seguridad, que se utilizan para proteger tablas.
DB2 para LUW. Afinamiento uso de la memoria
Afinamiento uso de la memoria El comando db2pd se utiliza para
solucionar problemas porque puede muestra una visión rápida y establece la información inmediata de la memoria de DB2.▪ El comando de db2pd -memblock puede ser
útil cuando usted está tratando de entender el uso de la memoria
DB2 para LUW. Afinamiento uso de la memoria
Administrador de tareas del SO Utilice esta herramienta para averiguar
que los procesos de DB2 está ejecutando y diagnosticar problemas de rendimiento.
Con esta herramienta, puede determinar el uso de memoria, límites de memoria, swapper, espacio utilizado y fugas de memoria para un proceso.
DB2 para LUW. Procesos mas comunes
DB2 para LUW. Procesos mas comunes
db2syscs (Win) Este es el controlador principal o motor del sistema DB2. A partir de DB2 9.5, hay un único motor principal multi-
hilo para toda la partición. El servidor de bases de datos no puede funcionar sin
este proceso.
db2acd Es el demonio de computación autonómica y se usa para
realizar tareas automáticas del lado del cliente, tales como el monitor de salud, utilitarios automáticos para mantenimiento y el programador de tareas administrativas.
DB2 para LUW. Procesos mas comunes
db2wdog El “perro guardián” (watchdog) de DB2. Está por encima de el proceso principal del
motor DB2 y se encarga de liberar recursos en caso que el proceso db2sysc termine anormalmente.
db2vend Fué introducido en la versión 9.5 de DB2. Proceso que es ejecutado e invocado por
terceras aplicaciones.
DB2 para LUW. Procesos mas comunes
db2wdog El “perro guardián” (watchdog) de DB2. Está por encima de el proceso principal del
motor DB2 y se encarga de liberar recursos en caso que el proceso db2sysc termine anormalmente.
db2vend Fué introducido en la versión 9.5 de DB2. Proceso que es ejecutado e invocado por
terceras aplicaciones.
DB2 para LUW. Procesos mas comunes
db2fmp Proceso que ejecuta código de usuario en
el servidor por fuera del firewall tanto para procedimientos almacenados como para funciones definidas por el usuario.
Db2sysc Es responsable del arranque y la
detención del sistema y el manejo de la instancia en ejecución.
DB2 para LUW. Procesos mas comunes
db2tcpcm Proceso que escucha las comunicaciones
TCP/IP
db2agent Agente coordinador que realiza operaciones
de base de datos en nombre de las aplicaciones.
Hay al menos uno por conexión, dependiendo si el Concentrador de Conexiones está activado
DB2 para LUW. Procesos mas comunes
db2agntp Es un subagente activo que es generado si
INTRA_PARALLEL tiene el valor YES.
db2agent Agente coordinador que realiza operaciones
de base de datos en nombre de las aplicaciones.
Hay al menos uno por conexión, dependiendo si el Concentrador de Conexiones está activado
DB2 para LUW. Afinamiento de I/O
La mejor práctica es controlar regularmente el sistema de carga con vmstat y iostat en Linux y sistemas basados en UNIX, y perfmon(Monitor de rendimiento de Windows).
También puede utilizar las vistas administrativas, como ENV_SYS_RESOURCES, para recuperar el sistema operativo, la CPU, la memoria, y otra información relacionada con el sistema.
DB2 para LUW. Afinamiento de SQL´S. REORG, RUNSTATS y REBIND
REORG El comando REORG toma el espacio
desperdiciado y reorganiza los datos para hacer la extracción más eficiente.
La mayoría de las tablas que son frecuentemente modificadas se beneficiarán al ejecutar REORG.
RUNSTATS Utilizado para actualizar estas estadísticas. Correr este comando es esencial para
mantener las estadísticas actualizadas.
DB2 para LUW. Afinamiento de SQL´S. REORG, RUNSTATS y REBIND
BIND / REBIND Los planes de acceso del SQL estático son
definidos cuando se ejecuta un comando BIND.
Las estadísticas usadas cuando se ejecutó el BIND no serán siempre las mismas que las actuales.
DB2 para LUW. Afinamiento de SQL´s. Paralelismo.
El optimizador puede elegir un plan de acceso para ejecutar una consulta sql en paralelo si el grado de paralelismo es especificado cuando la consulta es compilada.
En tiempo de ejecución múltiples procesos “agentes”, son creados para ejecutar la consulta.
El número de agentes es menor o igual al grado de paralelismo que fue especificado cuando la sentencia fue compilada.
Para paralelizar el plan de acceso el optimizador lo divide en porciones que son corridas por cada agente y una porción que es corrida por un agente coordinador.
Los agentes pasan datos al agente coordinador a través de colas de tablas.
DB2 para LUW. Afinamiento de SQL´s. Paralelismo.
Table e Index Scan Paralelos. La tabla o el índice es divido en rangos de paginas o filas, mismo
que son asignados a los agentes. Cuando un agente termina su escaneo se le puede asignar otro
rango del objeto. Este tipo de paralelismo provee una distribución equitativa del
trabajo. El objetivo es que balancear la carga entre los agentes para
mantenerlos ocupados equitativamente. Si el número de agentes ocupados es igual al número de CPUs y
los discos duros son recargados con IO se dice que los recursos de la maquina están siendo usados efectivamente.
Del mismo modo el optimizador puede aplicar estrategias de paralelismo para ejecutar ordenamientos, agrupaciones y creaciones de tablas temporales.
DB2 para LUW. Afinamiento de SQL´s. Uso de Materialized Query Tables (MQT).
Se puede pensar en una MQT como una tabla cuya definición está basada en el resultado de una consulta sql.
La MQT almacena físicamente la data resultado de la SQL y es posible trabajar con ella en lugar de usar la data de las tablas base.
MQT son una poderosa manera de mejorar el tiempo de respuesta para consultas complejas. Esto es especialmente cierto para consultas con una o más de las siguientes operaciones: Agregaciones sobre una o más dimensiones. Muchos Joins. Datos comúnmente accesados.
Durante la compilación de las sentencias SQL en la fase de sobre escritura el optimizador evalúa las MTQ y decide si corresponde substituir las tablas base por MQTs.
DB2 para LUW. Afinamiento de SQL´s. Explain.
Esta herramienta provee información detallada sobre el plan de acceso que el optimizador selecciona para una consulta SQL.
Esta información le sirve al programador o al DBA en el proceso de tunning de la consulta o de la instancia de la base de datos.
Esta herramienta le colabora en tareas como:
Entender como el manejador de la base de datos accesa las tablas e índices para satisfacer una consulta.
Evaluar el rendimiento de las modificaciones hechas durante el tunning.
Luego de modificar la sentencia o el parámetro se debe correr de nuevo esta herramienta para ver que, como y cuanto se mejoro con respecto a la versión anterior.
DB2 para LUW. Afinamiento de SQL´s. Explain.
El siguiente es un ejemplo de un plan de ejecución desde la aplicación IBM Data Studio 3.1.1 para la sentencia:
SELECT DECIMAL(AVG(salary),12,2) as average_sal, location, deptname FROM staff a, org b WHERE b.deptnumb=a.dept GROUP BY dept,location, deptname ORDER BY average_sal DESC
DB2 para LUW. Afinamiento de SQL´s. Explain.
DB2 para LUW. Afinamiento de SQL´s. Statement concentrator
Reduce la sobre carga por re ejecución de planes de acceso modificando sentencias SQL dinámicas en el servidor de base de datos, de modo que sentencias similares pero no idénticas puedan compartir el mismo plan de acceso.
En bases de datos OLTP, sentencias simples podrían ser generadas repetitivamente con diferentes valores literales. En estos casos el costo de recompilar la sentencia puede agregar una sobrecarga significativa.
Esta herramienta evita esta sobrecarga permitiendo que sentencias compiladas sean reusadas sin importar el valor de los literales.
El statement concentrator esta deshabilitado por defecto. Puede ser habilitado para todas las sentencias dinámicas en la base de datos asignando el parámetro smt_conc al valor LITERALS.
DB2 para LUW. Afinamiento de SQL´s. Statement concentrator
Ejemplo.
Estas dos sentencias son ejecutadas.
select firstnme, lastname from employee where empno=’000020’ select firstnme, lastname from employee where empno=’000070’
Las sentencias comparten la misma entrada en el package cache y esas sentencias usan el siguiente forma:
select firstnme, lastname from employee where empno=:L0
DB2 provee el valor de: L0 ('000020' o '000070'), basado en el literal que fue usando en la sentencia original.
DB2 para LUW. Consideraciones de SO.
El sistema operativo debe estar instalado sobre un almacenamiento exclusivo. Esto es dedicar un LUN en el servidor solo para alojar la instalación del sistema operativo de modo que las cargas de IO del sistema operativo no compitan con las cargas generadas por la base de datos en los LUN donde se ubiquen los archivos de datos.
Separar datos de archivos log. El servidor debe estar configurado para brindar almacenamiento exclusivo para estas dos cargas de datos.
Utilice file Systems en lugar de dispositivos raw.
Instalación periódica de patchs o hot fixes del sistema operativo.