Almacenamiento en caché de Innodb (parte 2) – Blog de rendimiento de base de datos de Percona

Hace unas semanas escribí sobre el almacenamiento en caché de Innodb con la idea principal de que es posible que necesite más almacenamiento en caché cuando cree que lo necesita porque Innodb almacena datos en caché en páginas, no en filas, por lo que toda la página debe estar en la memoria, incluso si necesita una sola fila de ella. . Creé el punto de referencia simple que muestra un mal escenario, eligiendo el conjunto aleatorio de valores de clave principal de la tabla sysbench y leyéndolos una y otra vez.

Esta vez decidí «acercar» en el momento en que se produjo la caída en el resultado: 2 veces el aumento en el número de filas por paso oculta muchos detalles, así que dejé un número de fila cuando todo todavía estaba en caché para todos y correr. y aumente el número de filas que se prueban un 20% por paso. Pruebe el tamaño de página estándar de Innodb, el tamaño de página de 4 KB y el tamaño de página de 16 K comprimidos a 4. Los datos en este caso se comprimen perfectamente (todas las páginas se pueden comprimir al valor deseado de 4 K), por lo que se prueba un mejor caso para la compresión .

Los resultados son muy interesantes desde muchos ángulos. Primero, podemos ver qué tan rápido puede caer el rendimiento en el peor de los casos cuando los datos ya no se almacenan en caché. Para páginas de 16 000, vemos una caída de más de 10 x, de 7 630 qps a 580 qps, ya que la cantidad de claves de acceso aumenta solo un 20 %, de 9 216 a 11 059.

Los resultados de 4K comienzan a disminuir antes. Esto se debe a que la base de datos en realidad ocupa más espacio con páginas de 4K: 2,7 GB en lugar de 2,2 GB debido a una mayor sobrecarga. También colapsaron de una manera mucho más lenta en comparación con los resultados de 16K. Todavía mantienen casi la mitad del rendimiento en 27,5K, incluso si las caídas comienzan en una clave de 9,2K, que es menos de 3 veces la pérdida de rendimiento con un aumento de 3 veces en el número de claves, que es muy diferente de la caída de 10x para páginas de 16K . No tengo una muy buena explicación de por qué sucede esto.

Los resultados de la compresión son una gran decepción. El archivo .idb comprimido tenía solo 620 MB, por lo que si Innodb elige mantener solo las páginas comprimidas en la memoria, debería poder mantener aproximadamente 1/5 de las páginas almacenadas en caché en el grupo de búfer de 128 MB. Podría compararse con el caso de las páginas 4K solo con 1/4 de los datos (y la sobrecarga requerida para la descompresión de la página) si esta es la política que habría elegido innodb. Sin embargo, en realidad, los resultados están mucho más cerca de los resultados de la página 16K con una caída bastante rápida. Aproximadamente el mismo número de qps (530) alcanzó 15925 en comparación con 11049, que es aproximadamente un 40% más clave.

Sin embargo, donde los resultados de la compresión fueron buenos fue con un número muy bajo de claves, cuando todo podía mantenerse sin comprimir en el grupo de búfer, e incluso en el caso de una carga de trabajo enlazada de E/S completa. Es difícil verlo en el gráfico, pero con una gran cantidad de claves, los resultados generales fueron los mejores, probablemente porque el tamaño de los datos era más pequeño.

Introducimos una métrica más. Digamos que los resultados «aceptables» para nuestra aplicación son 2000 qps, que es aproximadamente el 25 % del rendimiento cuando los datos se almacenan en la memoria. Elegí solo este número por simplicidad, aunque creo que es bastante razonable como objetivo. Con tales definiciones, 16K proporciona un rendimiento aceptable con 9216 teclas táctiles, 4K con 27518 y 16K comprimidas con 11516. Esto nos da 3 veces más teclas que podemos insertar en la memoria con páginas de 4K, lo cual es bastante bueno aunque no sea suficiente 4 veces. puede crecer. esperanza en teoría. Esto se explica por el hecho de que el tamaño de los datos es casi un 30 % mayor con páginas de 4K.

En este caso, se probó Percona Server 5.5, que me permite cambiar el tamaño de la página sin volver a compilar el servidor, aunque espero que los resultados para 16K y 16K comprimidos sean muy similares en MySQL 5.5.

Como un resumen: Si tiene un patrón de acceso muy aleatorio con una cola pequeña teniendo en cuenta el uso de páginas de 4K, es posible que la compresión no brinde mucha ganancia en la eficiencia del ajuste de caché.

A continuación, debemos observar más de cerca el rendimiento de varios motores de almacenamiento en este sentido. Tengo mucha curiosidad acerca de cómo se desempeñarán PBXT y TokuDB en este tipo de evaluación comparativa. También debe cambiar el punto de referencia para que pueda ingresar el número fijo de claves para ver si hace una diferencia. Finalmente, necesito publicar mi guión de referencia para que todas las partes interesadas puedan repetir mis resultados.

Author: Ing. Luis

A lo largo de conocer Windows y otros sistemas operativos me eh encontrado con diversos tipos de error, ahora brindo soluciones según mi experiencia-

Deja un comentario