Índice ordinario e índice único de MySQL
Tipos de índices comunes: tabla hash, matriz ordenada, árbol de búsqueda.
Índice ordinario e índice único de MySQL.
La instrucción para ejecutar la consulta es select id from T donde k=5
El proceso de búsqueda de esta instrucción de consulta en el árbol de índice comienza primero desde la raíz del árbol hasta Árbol B y búsquedas por capa Vaya al nodo hoja, que es la página de datos en la esquina inferior derecha de la figura, y luego se puede considerar que los registros se ubican dentro de la página de datos mediante el método de dicotomía.
Estructura de organización del índice de InnoDB:
Búfer de cambios: datos persistentes. InnoDB almacena en caché las operaciones de actualización en el búfer de cambios, es decir, el búfer de cambios tiene una copia en la memoria y también se escribe en el disco. El principal ahorro es el consumo de IO de la lectura aleatoria del disco.
El búfer de cambios solo se usa en escenarios de índices normales y no es adecuado para índices únicos.
Fusionar: aplique las operaciones en el búfer de cambios a la página de datos original para obtener la última. proceso de resultados.
Proceso de ejecución de fusión:
1. Lea la página de datos del disco a la memoria
2. Encuentre el registro del búfer de cambio de esta página de datos en el búfer de cambio , aplíquelos en secuencia para obtener la nueva versión de la página de datos
3. Escriba el registro de rehacer Este registro de rehacer contiene cambios en los datos y cambios en el búfer de cambios.
El búfer de cambios utiliza la memoria del grupo de búfer, por lo que no se puede aumentar infinitamente. El tamaño del búfer de cambios se puede expresar mediante el parámetro innodb_change_buffer_max_size = 50. El tamaño del búfer de cambios solo puede ocupar hasta 50 del grupo de búfer.
¿Cuál es el proceso InnoDB si deseas insertar un nuevo registro (4.400) en esta tabla?
El primer caso es que la página de destino a actualizar para este registro está en la memoria
En este momento, el flujo de procesamiento de InnoDB es el siguiente:
El segundo caso Sí, la página de destino a actualizar para este registro no está en la memoria
En este momento, el flujo de procesamiento de InnoDB es el siguiente:
mysqlgt; , k) valores (id1, k1), (id2, k2); El estado actual del árbol de índice k Después de encontrar la ubicación, la página de datos donde se encuentra k1 está en la memoria (grupo de búfer InnoDB). La página donde se encuentra k2 no está en la memoria.
Al analizar esta declaración de actualización, encontrará que incluye cuatro partes: memoria, registro de rehacer (ib_log_fileX), espacio de tabla de datos (t.ibd) y espacio de tabla del sistema (ibdata1).
Esta declaración de actualización realiza las siguientes operaciones (en orden numérico en la figura):
Proceso de actualización con búfer de cambio:
seleccione * de t donde k en (k1, k2), si la declaración de lectura ocurre poco después de la declaración de actualización y los datos en la memoria todavía están allí, entonces las dos operaciones de lectura en este momento no tienen nada que ver con el espacio de tabla del sistema (ibdata1) y el registro de rehacer (ib_log_fileX).