En esta publicación de blog, voy a explicar el tipo de tabla
Insert Time Clustering (ITC)
en Db2 para Linux, UNIX y Windows (Db2 LUW) y mostrar su principal beneficio: una fácil reclamación de espacio.
También te mostraré cómo puedes convertir tablas regulares en tablas ITC en un sistema SAP en Db2 LUW.
¿Te suena familiar?
Las tablas ITC han estado disponibles desde la versión 10.1 de Db2 (ver
Nuevas tablas de clustering de tiempo de inserción - Documentación de IBM
). Esta publicación de blog es en gran parte idéntica a un antiguo artículo de SAP (publicado por mi colega
johannes.heinrich
) que se basaba en la versión 10.1 de Db2 y ya no está disponible. He tomado sus resultados de prueba aquí y he agregado algunos enlaces y comentarios adicionales sobre las características de ITC que se introdujeron más tarde con la versión 10.5 de Db2.
Reclamación de espacios en tablas Db2 regulares (= basadas en filas)
Las tablas Db2 pueden tener un objeto de datos, índice y LOB. A continuación, me concentraré en la reclamación de espacio en el objeto de datos en tablas Db2 regulares. Por simplicidad, omitiré la compresión de datos porque no cambia el panorama general.
Comencemos desde el principio: Diseño estándar de tablespace
Los datos de columna de un objeto de datos se almacenan en páginas de un tablespace. En una instalación SAP estándar, los tablespaces tienen un tamaño de página de 16 KB. Cuando se insertan registros en una tabla recién creada, las páginas de datos se llenan una por una en orden consecutivo. Si un registro no cabe en una página, se inserta en la siguiente página. Esto significa que los datos que se insertan alrededor del mismo tiempo también se almacenan físicamente juntos, lo que significa que están agrupados según su tiempo de inserción.
Problema: El espacio no utilizado queda atrapado con el tiempo
Con el tiempo, los datos de la tabla existente pueden ser actualizados o eliminados por la aplicación. Si se eliminan registros, el espacio vacío puede ser reutilizado por inserciones futuras en la misma tabla siempre que encajen en el espacio vacío. Las operaciones de eliminación y actualización en una tabla implican que, con el tiempo, se pierde el orden secuencial en el que se insertaron inicialmente los registros, y aparece más espacio no utilizado en la tabla. Este espacio no utilizado queda atrapado en el objeto de datos de una tabla regular y no se reutiliza automáticamente por otros objetos en el mismo tablespace. Además, este espacio no utilizado atrapado no se puede devolver fácilmente del tablespace al sistema de archivos (usando una operación ALTER TABLESPACE).
Reclamación de espacio usando ADMIN_MOVE_TABLE y DB6CONV
Para reclamar completamente el espacio en el objeto de datos de una tabla regular de Db2, es necesaria una operación de REORG de movimiento de datos. Para realizar dicha operación de REORG de reclamación de espacio, se puede utilizar la rutina de Db2
ADMIN_MOVE_TABLE
que permite realizar esas operaciones de REORG de reclamación de espacio en línea. La utilidad de SAP
DB6CONV
es una interfaz ABAP popular para la rutina ADMIN_MOVE_TABLE. Como beneficio adicional, la rutina ADMIN_MOVE_TABLE reorganiza también el índice y el objeto LOB de una tabla en línea.
No es obligatorio realizar operaciones de REORG con fines de reclamación de espacio en tablas regulares de Db2 porque Db2 es capaz de reutilizar el espacio cuando se insertan nuevos datos. Sin embargo, después de una operación de eliminación masiva, puede ser útil poder liberar fácil y rápidamente el espacio atrapado en la base de datos. Reducir el tamaño del tablespace/base de datos también hará que las imágenes de copia de seguridad sean más pequeñas y las copias de seguridad más rápidas.
Técnicamente hablando: ¿Qué son exactamente las tablas ITC?
Las tablas ITC se crean especificando la palabra clave "ORGANIZE BY INSERT TIME" en la declaración CREATE TABLE. Las tablas ITC agrupan datos regulares basados en el tiempo de inserción del registro, es decir, los datos que se insertan alrededor del mismo tiempo se colocan cerca uno del otro. La tecnología de tabla ITC se basa en tablas de clustering multidimensional (MDC) (ver
Tablas de clustering multidimensional - Documentación de IBM
). En un entorno SAP, las tablas MDC solo se utilizan en bases de datos de SAP Business Warehouse (SAP BW). En comparación con las tablas MDC, las tablas ITC no tienen dimensiones de clustering definidas explícitamente. Es por eso que durante la fase de diseño en IBM, estas tablas incluso se llamaban "tablas de clustering de dimensión cero". En las tablas ITC,