Puntos de conocimiento relacionados con la información estadística de GreatSQL

Puntos de conocimiento relacionados:

INNODB_STATS_PERSIST=ONO STATS_PERSIST=1al definir una sola tabla, las estadísticas del optimizador se conservan en el disco. Por defecto, innodb_stats_persistentestá activado.

Las estadísticas persistentes se almacenan en tablas mysql.innodb_table_statsy mysql.innodb_index_stats.

La variable habilitada de forma predeterminada innodb_stats_auto_recalccontrola si las estadísticas se calculan automáticamente cuando cambian más del 10% de las filas de la tabla. STATS_AUTO_RECALCEl recálculo automático de estadísticas se puede configurar para una tabla individual especificando la cláusula al crear o modificar la tabla .

Debido a la naturaleza asincrónica del recálculo automático de estadísticas que ocurre en segundo plano, incluso si está habilitado innodb_stats_auto_recalc, las estadísticas no se volverán a calcular inmediatamente después de ejecutar una operación DML que afecte a más del 10% de la tabla. En algunos casos, el recálculo de las estadísticas puede retrasarse unos segundos. Si se necesitan las últimas estadísticas de inmediato, ejecute ANALYZE TABLE para iniciar un recálculo sincrónico (en primer plano) de las estadísticas.

Si está deshabilitado innodb_stats_auto_recalc, puede garantizar la precisión de las estadísticas del optimizador ejecutando una instrucción ANALYZE TABLE después de realizar una gran cantidad de cambios en una columna de índice.

Las estadísticas del optimizador no se conservan en el disco al crear o modificar una sola tabla INNODB_STATS_PERSIST=OFFmediante . STATS_PERSIST=0En cambio, las estadísticas se almacenan en la memoria y se pierden cuando se apaga el servidor. Las estadísticas también se actualizan periódicamente mediante determinadas acciones y bajo determinadas condiciones.

Cuando se agrega un índice a una tabla existente, o cuando se agrega o elimina una columna, innodb_stats_auto_recalclas estadísticas del índice se calculan y se agregan a innodb_index_statsla tabla independientemente del valor de .

Cinco parámetros que afectan las estadísticas

  • innodb_stats_persistent: Especifica si las estadísticas del índice InnoDB se conservan en el disco. Está habilitado de forma predeterminada.

  • innodb_stats_persistent_sample_pages: el número de páginas de índice que se van a muestrear al estimar la cardinalidad y otras estadísticas para las columnas de índice (como las calculadas por la tabla de análisis). Aumentar este valor puede mejorar la precisión de las estadísticas del índice, pero innodb_stats_persistent_sample_pagesestablecer un valor más alto puede hacer que las tablas de análisis tarden más en ejecutarse.

  • innodb_stats_auto_recalc: Hace que InnoDB recalcule automáticamente las estadísticas persistentes después de cambios significativos en los datos de la tabla. El umbral es el 10 % del número de filas de la tabla y está activado de forma predeterminada.

  • innodb_stats_include_delete_marked: Si InnoDB incluye registros marcados para su eliminación al calcular las estadísticas del optimizador persistente, está desactivado de forma predeterminada.

  • innodb_stats_transient_sample_pages: el número de páginas de índice que se van a muestrear al estimar la cardinalidad y otras estadísticas para las columnas de índice (como las calculadas por la tabla de análisis). El valor predeterminado es 8. Aumentar este valor puede mejorar la precisión de las estadísticas del índice, mejorando así los planes de ejecución de consultas, pero a costa de una mayor E/S al abrir tablas InnoDB o recalcular estadísticas. Este parámetro solo se aplica si está deshabilitado para la tabla innodb_stats_persistent; si está habilitado, INNODB_STATS_PERSISTse aplica INNODB_STATS_PERSIST_SAMPLE_PAGESen su lugarinnodb_stats_sample_pages

Resumir:

1. La información estadística no persistente se actualizará automáticamente en las siguientes situaciones:

  1. Ejecutar ANALIZAR TABLA
  2. innodb_stats_on_metadata=ONEn este caso, ejecute MOSTRAR ESTADO DE TABLA, MOSTRAR ÍNDICE y consulte las TABLAS y ESTADÍSTICAS en INFORMACIÓN_ESQUEMA.
  3. Con la función --auto-rehash habilitada, use el cliente mysql para iniciar sesión
  4. La mesa se abre por primera vez.
  5. Desde la última actualización de la información estadística, los datos de la tabla 1/16 han sido modificados.

Las desventajas de las estadísticas no persistentes son obvias. Si una gran cantidad de tablas comienzan a actualizar las estadísticas después de reiniciar la base de datos, tendrá un gran impacto en la instancia, por lo que actualmente se utilizan estadísticas persistentes.

2. Las estadísticas de persistencia se actualizarán automáticamente en las siguientes situaciones:

  1. INNODB_STATS_AUTO_RECALC=ONEn este caso se modifica el 10% de los datos de la tabla.

  2. Agregar nuevo índice

3. Manejo de información estadística inexacta

Verificamos el plan de ejecución y descubrimos que no se utilizó el índice correcto. Si se debe a una gran diferencia en la información estadística en innodb_index_stats, se puede manejar de las siguientes maneras:

  1. Actualice manualmente la información estadística. Tenga en cuenta que se agregarán bloqueos de lectura durante la ejecución:

ANALIZETABLE TABLE_NAME;

  1. Si la información estadística aún es inexacta después de la actualización, puede considerar agregar páginas de datos para el muestreo de tablas. Hay dos formas de modificarla:

​ a. El INNODB_STATS_PERSISTENT_SAMPLE_PAGESvalor predeterminado de las variables globales es 20;

​ b. Una sola tabla puede especificar el muestreo de la tabla:

ALTER TABLE TABLE_NAME STATS_SAMPLE_PAGES=40;

Después de la prueba, STATS_SAMPLE_PAGESel valor máximo aquí es 65535. Si se excede, se informará un error.

c. Actualice manualmente las estadísticas innodb_table_statsde innodb_index_statsla tabla (la modificación de estas dos tablas no generará binlog) y luego use FLUSH TABLE tbl_namedeclaraciones para cargar las estadísticas actualizadas.


Disfruta de GreatSQL :)

Acerca de GreatSQL

GreatSQL es una base de datos nacional independiente de código abierto adecuada para aplicaciones de nivel financiero. Tiene muchas características principales, como alto rendimiento, alta confiabilidad, alta facilidad de uso y alta seguridad. Puede usarse como un reemplazo opcional de MySQL o Percona Server. y se utiliza en entornos de producción online, completamente gratuito y compatible con MySQL o Percona Server.

Enlaces relacionados: Comunidad GreatSQL Gitee GitHub Bilibili

Gran comunidad SQL:

imagen

Sugerencias y comentarios sobre recompensas de la comunidad: https://greatsql.cn/thread-54-1-1.html

Detalles de la presentación del premio del blog comunitario: https://greatsql.cn/thread-100-1-1.html

(Si tiene alguna pregunta sobre el artículo o tiene ideas únicas, puede ir al sitio web oficial de la comunidad para preguntarlas o compartirlas ~)

Grupo de intercambio técnico:

Grupo WeChat y QQ:

Grupo QQ: 533341697

Grupo WeChat: agregue GreatSQL Community Assistant (ID de WeChat:) wanlidbccomo amigo y espere a que el asistente de la comunidad lo agregue al grupo.

Linus tomó el asunto en sus propias manos para evitar que los desarrolladores del kernel reemplacen las pestañas con espacios. Su padre es uno de los pocos líderes que puede escribir código, su segundo hijo es el director del departamento de tecnología de código abierto y su hijo menor es un núcleo. Colaborador de código abierto Huawei: tomó 1 año convertir 5000 aplicaciones móviles de uso común Migración completa a Hongmeng Java es el lenguaje más propenso a vulnerabilidades de terceros Wang Chenglu, el padre de Hongmeng: el código abierto Hongmeng es la única innovación arquitectónica. En el campo del software básico en China, Ma Huateng y Zhou Hongyi se dan la mano para "eliminar rencores". Ex desarrollador de Microsoft: el rendimiento de Windows 11 es "ridículamente malo " " Aunque lo que Laoxiangji es de código abierto no es el código, las razones detrás de él. Son muy conmovedores. Meta Llama 3 se lanza oficialmente. Google anuncia una reestructuración a gran escala.
{{o.nombre}}
{{m.nombre}}

Supongo que te gusta

Origin my.oschina.net/GreatSQL/blog/11054458
Recomendado
Clasificación