Reserva de espacio libre en espacios de tabla
Reservando el espacio libre de los espacios de tabla puede habilitar los datos para que permanezcan agrupados en clúster más tiempo entre las organizaciones y puede reducir el número de referencias indirectas y registros de desbordamiento que pueden dañar el rendimiento.
Antes de empezar
Acerca de esta tarea
Cuando no hay suficiente espacio libre disponible para operaciones de inserción o actualización, Db2 suele añadir filas nuevas al final de la tabla, fuera de la secuencia de clústeres. Cuando las actualizaciones de filas existentes indican que no pueden caber en la página original, Db2 crea referencias indirectas a registros de desbordamiento en páginas de datos diferentes. Cuando varios de estos registros se encuentren ubicados físicamente fuera de secuencia, el rendimiento se ve afectado negativamente.
Por tanto, una cantidad suficiente de espacio libre puede proporcionar las ventajas siguientes durante un proceso normal:
- Las filas de datos pueden permanecer en clúster mucho después de que los datos se reorganicen o se carguen, ya que no son necesarias inserciones aleatorias. Una buena agrupación en clúster puede mejorar las proporciones de coincidencias de almacenamiento intermedio y permite usar más la captación previa dinámica. Sin agrupación en clúster, las consultas deben depender de la captación previa de lista para tener un rendimiento adecuado. La agrupación en clúster puede ser menos importante si el hardware de almacenamiento utiliza unidades de control más nuevas y discos de estado sólido que puedan procesar la captación previa de lista con eficiencia.
- Las referencias indirectas se pueden evitar. Las referencias indirectas se crean cuando una operación de actualización aumenta el tamaño de una fila y esta no cabe en la página original que contenía la fila. Db2 almacena la fila en una página de desbordamiento y el RID original apunta al RID de desbordamiento. Las referencias indirectas solo se producen con filas de longitud variable. La causa más común de las referencias indirectas es el uso de columnas que admiten nulos VARCHAR que inicialmente contienen valores nulos y que luego se actualizan con valores no nulos. Las referencias indirectas son especialmente problemáticas en consultas que utilizan acceso aleatorio o captación previa de lista. Estos pueden provocar costes adicionales de CPU y más E/S síncrona. Db2 no puede utilizar la obtención previa de listas para leer registros desbordados. Se pueden supervisar las columnas NEARINDREF y FARINDREF de la tabla de catálogo SYSIBM.SYSTABLEPART para encontrar cuántas filas disponen de referencias indirectas.
- Un bloqueo de página único bloquea menos filas de datos, lo que reduce la contienda cuando se utiliza bloqueo de nivel de página.
Sin embargo, especificar demasiado espacio libre también tiene desventajas, incluida las siguientes:
- Se utiliza más espacio de disco para la misma cantidad de datos.
- Una única operación de E/S puede transferir menos información.
- La misma cantidad de datos ocupa más páginas, que deben explorarse.
- Las agrupaciones de almacenamiento intermedio y la caché del controlador de almacenamiento no se pueden utilizar con tanta eficiencia.
- En el caso de objetos de sólo lectura. Si no piensa insertar ni actualizar datos en una tabla, no se necesita espacio libre para el espacio de tabla.
- El objeto no es de sólo lectura, pero las inserciones se sitúan al final y las actualizaciones que alargan las columnas de longitud variable son pocas.
Procedimiento
Para mejorar el uso de espacio libre, utilice los métodos siguientes: