Al ejecutar UPDATE o DELETE en una tabla grande, una transacción estándar bloquea la tabla hasta que finaliza la operación. Esto impide lecturas y escrituras, y puede provocar tiempos de espera que afecten el tráfico de producción. El cambio de datos sin bloqueo evita este problema al dividir las filas afectadas en lotes pequeños y procesar cada lote como una transacción independiente y de corta duración. Cada lote confirma sus cambios y libera su bloqueo de inmediato, por lo que la tabla permanece disponible durante todo el proceso.
Precauciones
El cambio de datos sin bloqueo solo admite operaciones SQL simples y de una sola tabla (como SELECT, UPDATE y DELETE). Las operaciones con múltiples tablas (como instrucciones DELETE que contienen JOIN) no son compatibles.
Procedimiento
En este ejemplo se utiliza la función de cambio de datos sin bloqueo para modificar por lotes los datos de la columna big_table de la tabla long_text_b a random long text.
-
Un usuario regular envía un ticket.
Inicie sesión en Data Management DMS 5.0.
-
En la barra de navegación superior, seleccione Database Development > Data Change > Lockless change.
NotaSi utiliza la consola de DMS en modo simple, coloque el puntero sobre el icono
en la esquina superior izquierda de la consola y seleccione . -
Configure la información obligatoria y haga clic en Submit.
A continuación se describen algunos parámetros.
Parámetro Obligatorio Descripción Database Sí Seleccione poc_dev<\/code>.<\/code>Business Background No Describa sus requisitos empresariales para reducir los intercambios con los aprobadores. Affected Rows Sí Estime el número de filas que afectará este cambio. Ejecute una consulta COUNT<\/code> en la SQL Console para obtener este valor.<\/code>SQL Statements for Change Sí Introduzca la instrucción UPDATE o DELETE que desea ejecutar. -
En la página Ticket Details, haga clic en el botón Batch Execution Configuration, configure los siguientes parámetros y haga clic en Submit Change.

-
Confirme los detalles del ticket.
NotaConsulte la página Ticket Details para revisar los detalles del ticket. El sistema también realiza una comprobación previa de la instrucción SQL que se va a ejecutar, que incluye el análisis sintáctico de SQL, la verificación del tipo de SQL según las reglas de seguridad, la verificación de permisos del solicitante del ticket y la estimación de filas escaneadas.
-
Después de confirmar que la información es correcta y que se superó la comprobación previa, haga clic en Submit for Approval y luego en Confirm.
ImportanteAntes de enviarlo para aprobación, puede modificar el contenido del ticket y la configuración de programación. Una vez enviado el ticket para aprobación, no se puede modificar la información.
-
El administrador aprueba y ejecuta el ticket.
Inicie sesión en Data Management DMS 5.0.
En la página principal de la consola de DMS, en la sección My Tickets, haga clic en Pending Tickets.
En la página My Tickets, haga clic en el ticket number deseado.
En la página Ticket Details, confirme la información de cambio del ticket y haga clic en Approve.
Introduzca sus comentarios en el cuadro de texto de comentarios de aprobación y haga clic en OK.
Haga clic en Execute Change, seleccione la hora de ejecución y haga clic en OK.
-
Haga clic en Confirm Execution y el sistema iniciará automáticamente la ejecución.
NotaDe forma predeterminada, la ejecución es inmediata. También puede seleccionar una hora de inicio de ejecución.
Si especifica una hora de finalización, el sistema dejará de ejecutar las instrucciones SQL pendientes una vez llegada esa hora. Esta función se usa principalmente para evitar impactos en el negocio durante las horas pico.
En la sección Execution, haga clic en Details y luego en Execution Progress para consultar el progreso de ejecución de la tarea.
-
El administrador verifica la tarea.
Inicie sesión en .
En la lista de instancias, expanda la instancia POC_dev<\/code> y haga doble clic en la base de datos
poc_dev<\/code>-
En la ventana de la SQL Console, introduzca la siguiente consulta y haga clic en Execute. Podrá observar que los datos de la columna
long_text_bse actualizaron correctamente.SELECT * FROM `big_table`;