Modo mantenimiento
Aplicable a tareas de:
Compactación de ficheros de datos de las tablas.
Compactación de contenedores de las tablas.
Cuando realizamos tareas de mantenimiento recomendamos:
Que no haya usuarios conectados a la instancia.
Que no haya tareas, funciones remotas, enganches web, transacciones, etc., en ejecución contra esa instancia en ese momento.
Ejecutarlos en modo mantenimiento para garantizar que no puedan conectarse usuarios o funciones remotas durante su ejecución. El modo mantenimiento detiene la instancia y por tanto no acepta más conexiones, y desengancha los usuarios que haya en ese momento conectados, hasta la finalización de la tarea, momento en el que continúa la instancia y acepta conexiones de nuevo.
Contemplar que pueden ser procesos largos para ejecutarlos con margen de tiempo suficiente para que terminen antes de que sea necesario que se conecten los usuarios.
No intentar ejecutar en paralelo más de una tarea de compactación, reindexación o vaciado de tablas.
Al ser tareas con gran uso de recursos del sistema conviene ejecutar este tipo de tareas en horas de menor actividad del servidor.
Debemos tener en cuenta que la compactación de datos afectará a los índices complejos que usen la tabla, por lo que deberían regenerarse a continuación y antes de que la aplicación se ponga disponible a los usuarios.
Evitar que haya procesos o transacciones en ejecución cuando se disparen las tareas en modo mantenimiento porque se finalizarán en el momento, lo que obligará a deshacer esas transacciones.
Nunca debemos ejecutar este tipo de operaciones contra una tabla desde triggers de propia tabla o de tablas que la modifquenpor trigger, actualizaciones, etc.
Comportamientos que se pueden obtener si no operamos en modo mantenimiento
Vaciado de tabla mientras se están añadiendo fichas en la tabla
Lanzar proceso de vaciado mientras se está ejecutando un proceso que está dando de alta registros
Se vacía la tabla. Si coincide que mientras vacía se intenta un alta, la transacción del alta se desecha hasta terminar el vaciado y por el reintento se vuelve a hacer. Resultado final, la tabla queda con el numero de registros resultante después de haber vaciado la tabla a mitad del proceso. Es decir si se ejecutó un proceso que importaba 1000 registros y en el alta 700 se lanza el vaciado de la tabla, al final la tabla quedará con 300 registros.
Lanzar de vaciado como tarea sin modo mantenimiento mientras se está ejecutando un proceso que está dando de alta registros
Si en ese instante coincide que se esta ejecutando el alta, la tarea termina OK pero los mensajes del vAdmin se muestran mensajes de error que no pudo realizar la operación por encontrar el dat/cnd bloqueado. Si coincide que esta haciendo la operación de vaciar y luego va el alta, entonces el alta da error en la transacción y por los reintentos se termina ejecutando.
Si la tarea de vaciado la ejecutamos en modo mantenimiento, se expulsará el enganche, por ende la transacción de alta queda finalizada y, finalmente, vacía la tabla.
Lanzar en 3º plano la compactación de una tabla de forma simultánea y la compactación de su contenedor
Si mientras se está ejecutando un proceso de compactación de una tabla, lanzamos otro proceso de compactación sobre la misma tabla, el resultado será que solamente se ejecutará el primero de ellos, el segundo finalizará sin ejecutarse.
Compactar tabla mientras se está ejecutando una copia de seguridad
La compactación no hará.
Lanzar compactación de tabla mientras se regeneran índices complejos
Esto nunca debemos hacerlo porque pueden no regenerarse correctamente los índices complejos.
Transaccionar en una tabla que se está compactando/vaciando
Alta de ficha desde formulario mientras se está compactando
Se deshace la transacción de alta.
Lanzar en tercer plano proceso que crea fichas mientras se ejecuta un proceso de compactación
La transacción queda a la espera y se reintenta, si la compactación termina antes de los reintentos de la transacción, ésta se realizará con éxito. Si no, se deshará.
Ejecutar proceso de vaciado de tabla mientras se ejecuta una transacción sobre la misma
El proceso da error y no se vacía la tabla.