Examinando las estadísticas persistentes de MySQL InnoDB

Hace unos días escribí sobre cómo las estadísticas obsoletas pueden volver a través de MySQL Information_Schema. En esa publicación, Øystein Grøvlen sugirió echar un vistazo mysql.innodb_table_stats y mysql.innodb_index_stats como una mejor fuente de información. ¡Hagámoslo!

Comencemos con las buenas noticias. A diferencia de las tablas de diccionario de datos de MySQL (mysql.table_stats, etc) mysql.innodb_table_stats y mysql.innodb_index_stats pueden ser solicitados por los usuarios. También contienen muchas estadísticas interesantes. Sin embargo, antes de llegar a eso, examinemos de dónde provienen estas tablas con más detalle.

Como el manual nos dice, estas tablas han estado almacenando estadísticas persistentes de InnoDB, pero solo si se han habilitado. Mientras que en MySQL 8, el valor predeterminado es usar estadísticas persistentes y actualizarlas automáticamente, el usuario tiene la opción de deshabilitar las estadísticas persistentes. innodb_stats_persistent = 0 variable o desactivar las actualizaciones automáticas para la configuración innodb_stats_auto_recalc = 0lo que significa que los datos de estas tablas pueden faltar o ser muy estables.

Además, en su búsqueda de la máxima flexibilidad, Team MySQL le permite habilitar/deshabilitar estas opciones tabla por tabla usando STATS_PERSISTENTE, STATS_AUTO_RECALCy STATS_SAMPLE_PAGES CREAR TABLA cláusula. Esto significa que la información puede estar presente para algunas tablas pero no para otras.

Entonces, si bien estos datos son muy valiosos cuando se presentan, no debe confiar en su presencia o precisión.

Vale eso es todo. Echemos un vistazo a lo que tenemos en estas tablas:

La información de la tabla contiene un número estimado de filas, así como el tamaño del índice agrupado y el tamaño de todos los demás índices combinados en páginas. Multiplicar por innodb_page_size La variable se obtiene por tamaño de byte.

También, ten en cuenta última actualización columna que especifica cuándo se actualizaron las estadísticas por última vez. Last_update muy antiguo puede significar dos cosas: la tabla no recibe múltiples escrituras para habilitar la actualización de estadísticas o la actualización automática de estadísticas para esta tabla está deshabilitada.

Ahora echemos un vistazo innodb_index_stats mesa:

Esta tabla pretende ser extensible y capaz de mantener varias estadísticas diferentes para el mismo índice.

Vemos algunas estadísticas aquí. Primero, hay n_diff_pfxXX estadísticas que muestran la cardinalidad de los diversos prefijos de índice: las columnas específicas que forman parte de ese prefijo se especifican en stat_description valor. Estos son los mismos valores de cardinalidad que ves si los ejecutas MOSTRAR ÍNDICE DESDE tpcc.orders1 mando.

Las otras estadísticas son n_pagina_pagina y cortar que para cada índice especifica el tamaño completo (en páginas), así como el número de páginas de la hoja. La diferencia entre estos dos es el número de páginas sin hojas que tiene la tabla.

En este ejemplo, la tabla orders1 tiene 95 páginas sin hojas y 577 páginas sin hojas, o 672 páginas en total.

Esta información puede ayudarlo a identificar cuánto espacio se necesita en el grupo de búfer de InnoDB si desea que un índice en particular se almacene en caché por completo, o al menos tener páginas en caché sin hoja (lo que garantiza que la búsqueda de índice no tome más de un IO operación). ).

Resumen

mysql.innodb_table_stats y mysql.innodb_index_stats pueden ser excelentes fuentes de información detallada sobre sus tablas InnoDB e Index, y están habilitadas y disponibles de forma predeterminada en las versiones modernas de MySQL. Sin embargo, tenga en cuenta que, en determinadas configuraciones, la información de estas tablas no está disponible o está muy obsoleta. Además, debido a que las estadísticas se calculan mediante muestreo, son inexactas y pueden ser muy inexactas bajo ciertas condiciones.

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