Pregunta

Una vez al día es necesario que actualice una tabla de MySQL con un nuevo archivo descargado de la red mediante ftp y luego mysqlimport. Sin embargo, quiero que mi página web para mantener funcionando sin problemas durante la operación mysqlimport, que lleva bastante tiempo (que es una gran tabla). Lo que sería una buena manera de asegurar que los usuarios no esperan a la importación a fin? Estoy pensando en importar a una tabla temporal y luego el cambio de nombre. Es que un buen plan?

¿Fue útil?

Solución

Un hecho poco conocido es que se puede concatenar más de una instrucción de cambio de nombre en MySQL y se llevará a cabo todos los cambios de nombre atómicamente.

create table newtable like oldtable;
insert into newtable .......
rename table oldtable to deleteme, newtable to oldtable;
drop table deleteme;

La mesa de cambio de nombre bloqueará los lectores (de hecho, se bloqueará cualquier resolución del nombre), pero debe ser una operación muy rápida.

Otros consejos

Si se trata de un caso de una actualización incremental, simplemente podría estrangular la inserción de nuevos datos a través de cron / programación.

Carga XYZ registra cada minuto, a ver si la actualización anterior ha terminado, hacer un fichero de bloqueo, inserción tardía, aclarar y repetir.

Si usted quiere conseguir realmente inteligente al respecto, tienen la secuencia de comandos de actualización compruebe la carga del servidor en tiempo de ejecución y ajustar el número de importaciones en consecuencia.

Esto hará que nuevos datos para aparecer en lotes, pero le permitirá mantener el sitio funcionando mientras está siendo actualizada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top