InnoDB implementa un mecanismo de puntos de
verificación llamado fuzzy checkpoint (punto de
verificación difuso). InnoDB descarga las páginas
modificadas de la base de datos desde el pool de buffers en lotes
pequeños. No es necesario descargar al disco el pool de buffers en una
sola acción, lo cual en la práctica podría detener temporalmente el
procesamiento de sentencias SQL del usuario.
Durante la recuperación de caídas, InnoDB busca un
marcador de checkpoint escrito en los ficheros de registro (log). Ya
sabe que todas las modificaciones a la base de datos anteriores al
marcador están presentes en la imagen en disco de la misma.
Entonces InnoDB recorre los ficheros de registro
(log) desde el checkpoint hacia adelante, aplicando sobre la base de
datos las modificaciones registradas.
InnoDB escribe en los ficheros de registro en una
forma rotativa. Todas las modificaciones confirmadas que hagan a
las páginas de la base de datos en el pool de buffers diferentes de las
grabadas en disco deben estar disponibles en los ficheros de registro en
caso de que InnoDB tenga que hacer una recuperación.
Esto significa que cuando InnoDB comienza a
reutilizar un fichero de registro, tiene que asegurarse de que las
imágenes en disco de las páginas de base de datos contienen las
modificaciones asentadas en el fichero de registro que se va a
reutilizar. En otras palabras, InnoDB debe crear un
punto de verificación (checkpoint) y esto a menudo implica la descarga a
disco de las páginas de base de datos modificadas.
La descripción anterior explica porqué hacer los ficheros de registro muy grandes puede ahorrar operaciones de E/S en disco destinadas a la creación de puntos de verificación. A menudo se hace hincapié en establecer el tamaño total de los ficheros de registro en lo mismo que el pool de buffers o aún más grande. La desventaja que tienen los ficheros de registro grandes es que la recuperación ante una caída puede tomar más tiempo debido a que hay más información que debe aplicarse a la base de datos.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.
