Db2 10 afinamiento

44
DB2 10.1 Afinamiento Universidad Cenfotec. Curso: Afinamiento de bases de datos. Alumno: Andrés Calvo | Germán Rodríguez.

Transcript of Db2 10 afinamiento

Page 1: Db2 10   afinamiento

DB2 10.1 Afinamiento

Universidad Cenfotec.Curso: Afinamiento de bases de datos.Alumno: Andrés Calvo | Germán Rodríguez.

Page 2: Db2 10   afinamiento

DB2 Presentaciones.

DB2

-for Z/os (mainframe).

- for i Series (midrange).

- for LUW (linux, unix, windows)

Page 3: Db2 10   afinamiento

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.

Page 4: Db2 10   afinamiento

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.

Page 5: Db2 10   afinamiento

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.

Page 6: Db2 10   afinamiento

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.

Page 7: Db2 10   afinamiento

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.

Page 8: Db2 10   afinamiento

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

Page 9: Db2 10   afinamiento

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

Page 10: Db2 10   afinamiento

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.

Page 11: Db2 10   afinamiento

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

Page 12: Db2 10   afinamiento

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.

Page 13: Db2 10   afinamiento

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.

Page 14: Db2 10   afinamiento

DB2 para LUW. Workload Management (WLM).

Page 15: Db2 10   afinamiento

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.

Page 16: Db2 10   afinamiento

DB2 para LUW. Design Advisor.

Page 17: Db2 10   afinamiento

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.

Page 18: Db2 10   afinamiento

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.

Page 19: Db2 10   afinamiento

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.

Page 20: Db2 10   afinamiento

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.

Page 21: Db2 10   afinamiento

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.

Page 22: Db2 10   afinamiento

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.

Page 23: Db2 10   afinamiento

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.

Page 24: Db2 10   afinamiento

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

Page 25: Db2 10   afinamiento

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.

Page 26: Db2 10   afinamiento

DB2 para LUW. Procesos mas comunes

Page 27: Db2 10   afinamiento

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.

Page 28: Db2 10   afinamiento

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.

Page 29: Db2 10   afinamiento

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.

Page 30: Db2 10   afinamiento

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.

Page 31: Db2 10   afinamiento

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

Page 32: Db2 10   afinamiento

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

Page 33: Db2 10   afinamiento

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.

Page 34: Db2 10   afinamiento

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.

Page 35: Db2 10   afinamiento

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.

Page 36: Db2 10   afinamiento

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.

Page 37: Db2 10   afinamiento

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.

Page 38: Db2 10   afinamiento

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.

Page 39: Db2 10   afinamiento

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.

Page 40: Db2 10   afinamiento

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

Page 41: Db2 10   afinamiento

DB2 para LUW. Afinamiento de SQL´s. Explain.

Page 42: Db2 10   afinamiento

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.

Page 43: Db2 10   afinamiento

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.

Page 44: Db2 10   afinamiento

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.