¿Cuánto sabe sobre MySQL online ddl?

Antes de presentar la herramienta pt -online-Schema-Change producida por Percona , puede lograr DDL en línea, de hecho, la versión MySQL 5.6 también se agregó a la  funcionalidad DDL en línea , pero ese tiempo no es una función saludable, lo que lleva a que el DBA se use nuevamente con extrema precaución, e incluso el acceso directo para abandonar MySQL viene con la funcionalidad de cambio en línea, así como la optimización continua de MySQL5.7 advenimiento de 8.0, MySQL viene con el DDL en línea es cada vez más completo y estable, hoy trabajamos juntos para entender debajo.


Ejemplo de sintaxis DDL en línea de ALGORITHM MySQL, por ejemplo, queremos agregar una clave primaria:

ALTER TABLE tbl_name AÑADIR CLAVE PRIMARIA (columna), ALGORITMO = INPLACE, LOCK = NONE;
Entre ellos, ALGORITHM tiene tres algoritmos, a saber , copiar , in situ e instantáneo .
  • copiar: cuando MySQL selecciona este algoritmo, toda la operación está fuera de línea y otras declaraciones DML se bloquearán durante la ejecución de DDL, durante la cual se producirán tablas temporales y los datos de la tabla original se copiarán en la nueva tabla.


  • inplace: Todas las operaciones se completan en la capa del motor innodb, sin pasar por tablas temporales. A excepción de la creación de un índice de texto completo y un índice espacial, otros escenarios permiten que DML funcione en paralelo. El algoritmo se divide en reconstruir y no reconstruir según se reconstruya la tabla.

    La reconstrucción implica la reconstrucción de la tabla. Generará nuevos archivos .frm y .ibd bajo la ruta de la tabla original. Al mismo tiempo, solicite espacio de registro de fila para registrar el registro de operación DML durante la ejecución de DDL y, finalmente, rehaga el contenido en el registro de filas durante la etapa de envío de DDL.

    No-rebuild no implica la reconstrucción de la tabla. A excepción de la operación de escritura del índice secundario al crear y agregar el índice, las otras operaciones solo modifican la información de metadatos, no generarán el archivo .ibd y no se aplicarán para espacio de registro de fila Este escenario consume menos IO y es más rápido.

  • Instantáneo: esta función se introdujo en MySQL 8.0.12. Solo modifica la información de metadatos del diccionario de datos. No es necesario copiar datos o reconstruir la tabla. Los datos de la tabla original no se ven afectados. Todo el proceso de DDL se ejecuta muy rápido y no bloqueará las operaciones de DML.

 Nota:

  1. Al realizar operaciones DDL, generalmente no necesitamos especificar ALGORITHM, y MySQL determinará internamente qué método debe usarse para realizar cambios.

  2. Para las operaciones que involucran la reconstrucción de tablas, debe prestar atención al uso del disco donde se encuentra la tabla original.

  3. Para la operación de solicitar espacio de registro de filas, debe prestar atención al valor de innodb_online_alter_log_max_size, que es 128M por defecto, que representa el valor máximo del registro de filas y admite modificaciones dinámicas. El tamaño de cada aplicación para el espacio está determinado por innodb_sort_buffer_size.

  4. Para la mesa de negocios de 24 horas, si no está seguro de si la operación afectará el negocio en línea, se recomienda utilizar la herramienta pt-osc para realizar el cambio.

La clasificación de las escenas de operación DDL     Hablé sobre los distintos algoritmos de ddl en línea. Dado que no todas las operaciones están en línea, debemos distinguirlas. Para diferentes operaciones, qué modo se usará en MySQL, hice un resumen de clasificación. ¡Puedo ayudarte! 

imagen


Supongo que te gusta

Origin blog.51cto.com/15057848/2656200
Recomendado
Clasificación