¿Cómo ver el registro de operaciones de la base de datos MySQL?
En este momento, si kill descarta el hilo de actualización, revertir el registro de deshacer llevará mucho tiempo. Si a nadie le importa, no sé cuánto durarán las actualizaciones.
¿Podemos conocer el progreso de la actualización?
Experimento
Primero creemos una base de datos de prueba:
Cree rápidamente algunos datos:
Ejecute el mismo SQL varias veces en un fila, puede crear rápidamente decenas de millones de datos:
Compruebe el número total de filas:
Publiquemos una gran actualización:
Luego inicie otra sesión Y observe la información en performance_schema:
Como puede ver, performance_schema enumera el número de filas que el SQL actual obtiene del motor.
Una vez completado el SQL, veamos cuántas filas se actualizaron desde el motor:
Como puede ver, el número total de filas actualizadas se obtuvo del motor es el doble del tamaño. de la tabla, por lo que se puede estimar: progreso de actualización = (filas_examinadas)/(2 *número de filas en la tabla).
Consejos
En information_schema.tables, se proporciona una estimación del número de filas de la tabla, que es mucho menor y casi insignificante que usar select count(1).
Entonces, ¿es cierto que todas las actualizaciones obtienen el doble de filas del motor que el tamaño de la tabla? Esto aún debe discutirse caso por caso. El SQL anterior actualiza la clave principal. ¿Qué pasa si solo actualiza el contenido pero no la clave principal? Intentemos:
Espere a que finalice la actualización, verifique row_examined y descubra que es exactamente el tamaño de la tabla:
Entonces, ¿cómo calculamos con precisión este múltiplo?
Un método es confiar en la experiencia: cuántas filas se escanearán en el dónde de la declaración de actualización, si se modifica la clave principal y si se modifica la clave única, y el coeficiente se estima en función de estas condiciones.
Otro enfoque es probarlo en una mesa más pequeña con la misma estructura y obtener varias.
De esta manera, podemos estimar con precisión el progreso de grandes actualizaciones.