Detección de índices, tablas y packages no usados en DB2

A partir de la versión 9.7 de DB2, se puede conocer que índices no están siendo usados en una Base de Datos. La consulta es igualmente trasladable a tablas y packages.

DB2 proporciona así una herramienta útil para tunear los índices y detectar problemas en su uso.

La novedad que incluye la versión 9.7 es la inclusión de un nuevo campo LASTUSED en las tablas SYSCAT.INDEXES, SYSCAT.TABLES y SYSCAT.PACKAGES.

Este campo indica la fecha de último uso del índice, tabla o packages.

Cómo buscar las tablas con más accesos en DB2

Es relativamente simple, y poco conocido, con la utilidad db2top.

Accediendo a la opción “T” (tablas) y ordenando la lista (pulsar “z”) e indicar que lo realice por la columna 1.

En primera posición aparecerá la tabla más accedida. Si existe mucha diferencia entre las primeras y el resto durante un periodo de tiempo apreciable de uso normal de la base de datos, esas tablas serían candidatas a intentar mejorar su acceso a ellas o intentar que sus tiempos de acceso sean óptimos para mejorar el rendimiento global.

 

Otro método para detectar índices no usados en DB2

En este artículo muestro un método para ver los índices no-usados de nuestra base de datos desde el último reinicio.

Ya traté este tema en el artículo Detección de índices, tablas y packages no usados en DB2 9.7, pero dicho artículo utiliza la columna LASTCOLUMN incluida en la versión 9.7. Si tienes otra versión, o incluso la 9.7, este artículo te permitirá conocer que índices no están siendo usados, con el desperdicio de recursos que conlleva.

Usar db2look para crear DDL de una tabla en concreto, o un esquema completo

La utilidad db2look permite extraer la definición de los objetos de base de datos. Además, permite algo realmente interesante: extraer las estadísticas de los objetos para exportarlas a otros entornos de prueba/integración y obtener los mismos planes de acceso a los objetos.

En este artículo veremos su utilidad más frecuente.

 

Extracción del DDL de los objetos de mi esquema:

db2look -d MI_BBDD -a -e -x -o FICHERO_SALIDA.txt

Extración del DDL de la tabla DEPT:

db2look -d MI_BBDD -t DEPT -a -e -x -o FICHERO_SALIDA.txt

 

Tiempos medios de acceso lectura/escritura a disco a nivel de DB2

A través de DB2 se pueden obtener los tiempos medios en ms de acceso a disco que está teniendo DB2. Estos tiempos son determinantes para la detección de un problema de IO en los discos que tienen los datos de DB2.

Habitualmente se tiene en consideración que un valor cercano a 2-3ms es bueno, más allá de 10ms puede estar indicando problemas.

Promedio milisegundos/escritura (avg ms/write):

select trunc(decimal(sum(pool_write_time))/decimal(

(sum(pool_data_writes)+sum(pool_index_writes))),3)

from sysibmadm.snaptbsp

 

Historial de versiones de DB2

Este artículo muestra cómo obtener con una query el historial de versiones de DB2 y sus parcheos.

Es decir, no sólo muestra la versión actual, sino desde cuando está instalada/actualizada, incluyendo todas la versiones/parches anteriores.

select versionnumber, version_timestamp

from sysibm.sysversions

El resultado de la query nos muestra el historial de versiones/parches de la instalación: