Sí, hay casos en los que puede especificar COPY
, pero sería por otras razones además del rendimiento.
Es importante comprender que MySQL introdujo una nueva característica: el procesamiento de DLL en línea en la versión 5.6. No eliminó el procesamiento fuera de línea. Por lo tanto, es necesario diferenciar entre estos 2 modos:
Algunas operaciones siguen funcionando solo en modo sin conexión. Consulte la Tabla 15.10, “ Resumen del estado en línea para operaciones DDL ” para obtener una lista de las operaciones DDL que pueden o no pueden realizarse en el lugar.
Las operaciones en los modos en línea y fuera de línea tienen un comportamiento ligeramente diferente, por lo que puede elegir uno "antiguo" por razones de compatibilidad.
Algunos ejemplos (sugiera más):
Las tablas InnoDB creadas antes de MySQL 5.6 no son compatibles ALTER TABLE ... ALGORITHM=INPLACE
con las tablas que incluyen columnas temporales ( DATE
, DATETIME
o TIMESTAMP
) y no se han reconstruido utilizando ALTER TABLE ... ALGORITHM=COPY
. En este caso, una ALTER TABLE ... ALGORITHM=INPLACE
operación devuelve un error.
ADD PRIMARY KEY
La cláusula in COPY mode
convierte silenciosamente NULL
a valores predeterminados para ese tipo de datos (0 para INT, cadena vacía para varchar), mientras IN_PLACE
que no hace eso.
Con la cláusula ALGORITHM = COPY, la operación tiene éxito a pesar de la presencia de valores NULL en las columnas de clave principal; los datos se cambian silenciosamente, lo que podría causar problemas.
Otra razón para preferir COPY
:
Operaciones para las que especifica ALGORITHM = COPY o old_alter_table = 1, para forzar el comportamiento de copia de la tabla si es necesario para una compatibilidad con versiones anteriores precisa en escenarios especializados.
Aunque el manual de MySQL no habla sobre escenarios reales, puedes imaginar algunos. Por ejemplo, el desarrollador confió en que la tabla se bloqueó durante la ALTER INDEX
operación, por lo que la tabla es de solo lectura o está completamente bloqueada y hay un proceso que lee la tabla estática durante la reconstrucción del índice.