soporta segundo por optimizar mostrar indice cuantas crear consultas con como archivo mysql performance alter

segundo - optimizar consultas mysql



Optimiza mySql para una columna de agregar tabla de cambios más rápida (4)

Bueno, recomendaría utilizar las últimas versiones de MySQL de Percona, ya que existe la siguiente nota en el manual de MySQL

En otros casos, MySQL crea una tabla temporal, incluso si no es necesario copiar los datos estrictamente. Para las tablas MyISAM, puede acelerar la operación de recreación del índice (que es la parte más lenta del proceso de alteración) estableciendo la variable del sistema myisam_sort_buffer_size en un valor alto.

Primero puede hacer ALTER TABLE DISABLE KEYS , luego agregar columna y luego ALTER TABLE ENABLE KEYS . No veo que se pueda hacer nada aquí.

Por cierto, ¿no puedes ir a MongoDB? No reconstruye nada cuando agrega una columna.

Tengo una tabla que tiene 170,002,225 filas con alrededor de 35 columnas y dos índices. Quiero agregar una columna El comando alter table tomó aproximadamente 10 horas. Ni el procesador parecía estar ocupado durante ese tiempo ni hubo excesivas esperas de IO. Esto está en una caja de alto rendimiento de 4 vías con toneladas de memoria.

¿Es esto lo mejor que puedo hacer? ¿Hay algo que pueda ver para optimizar la columna de agregar en la afinación del db?


Me enfrenté a una situación muy similar en el pasado y mejoró el rendimiento de la operación de esta manera:

  1. Cree una nueva tabla (usando la estructura de la tabla actual) con la (s) nueva (s) columna (s) incluidas.
  2. ejecutar un INSERT INTO new_table (column1,..columnN) SELECT (column1,..columnN) FROM current_table;
  3. cambiar el nombre de la tabla actual
  4. renombra la nueva tabla usando el nombre de la tabla actual.

Tal vez puedas eliminar el índice antes de alterar la tabla porque lo que más tiempo lleva construir es el índice.


ALTER TABLE en MySQL va a crear una nueva tabla con un nuevo esquema, luego volver a INSERT todos los datos y eliminar la tabla anterior. Puede ahorrar algo de tiempo creando la nueva tabla, cargando los datos y luego cambiando el nombre de la tabla.

Desde el "Libro MySQL de alto rendimiento" (los tipos de percona):

El truco habitual para cargar la tabla MyISAM de manera eficiente es deshabilitar las claves, cargar los datos y renalbe las claves:

mysql> ALTER TABLE test.load_data DISABLE KEYS; -- load data mysql> ALTER TABLE test.load_data ENABLE KEYS;