Points de connaissances liés aux informations statistiques GreatSQL

Points de connaissances associés :

INNODB_STATS_PERSIST=ONOu STATS_PERSIST=1lors de la définition d'une seule table, les statistiques de l'optimiseur sont conservées sur le disque. Par défault, innodb_stats_persistentc'est activé.

Les statistiques persistantes sont stockées dans des tables mysql.innodb_table_statset mysql.innodb_index_stats.

La variable activée par défaut innodb_stats_auto_recalccontrôle si les statistiques sont automatiquement calculées lorsque plus de 10 % des lignes du tableau changent. STATS_AUTO_RECALCLe recalcul automatique des statistiques peut être configuré pour une table individuelle en spécifiant la clause lors de la création ou de la modification de la table .

En raison de la nature asynchrone du recalcul automatique des statistiques qui s'effectue en arrière-plan, même si cette option est activée innodb_stats_auto_recalc, les statistiques ne seront pas recalculées immédiatement après l'exécution d'une opération DML affectant plus de 10 % de la table. Dans certains cas, le recalcul des statistiques peut être retardé de quelques secondes. Si les dernières statistiques sont nécessaires immédiatement, exécutez ANALYZE TABLE pour lancer un recalcul synchrone (au premier plan) des statistiques.

Si cette option est désactivée innodb_stats_auto_recalc, vous pouvez garantir l'exactitude des statistiques de l'optimiseur en exécutant une instruction ANALYZE TABLE après avoir apporté un grand nombre de modifications à une colonne d'index.

Les statistiques de l'optimiseur ne sont pas conservées sur le disque lors de la création ou de la modification d'une seule table INNODB_STATS_PERSIST=OFFà l'aide de . STATS_PERSIST=0Au lieu de cela, les statistiques sont stockées en mémoire et sont perdues lorsque le serveur est arrêté. Les statistiques sont également mises à jour périodiquement au travers de certaines actions et sous certaines conditions.

Lorsqu'un index est ajouté à une table existante, ou lorsqu'une colonne est ajoutée ou supprimée, innodb_stats_auto_recalcles statistiques d'index sont calculées et ajoutées à innodb_index_statsla table quelle que soit la valeur de .

Cinq paramètres qui affectent les statistiques

  • innodb_stats_persistent: Spécifie si les statistiques d'index InnoDB sont conservées sur le disque. Elle est activée par défaut.

  • innodb_stats_persistent_sample_pages: nombre de pages d'index à échantillonner lors de l'estimation de la cardinalité et d'autres statistiques pour les colonnes d'index (telles que celles calculées par la table d'analyse). L'augmentation de cette valeur peut améliorer la précision des statistiques d'index, mais innodb_stats_persistent_sample_pagesla définition d'une valeur plus élevée peut ralentir l'exécution des tables d'analyse.

  • innodb_stats_auto_recalc: oblige InnoDB à recalculer automatiquement les statistiques persistantes après des modifications significatives des données de la table. Le seuil est de 10 % du nombre de lignes du tableau et est activé par défaut.

  • innodb_stats_include_delete_marked: Indique si InnoDB inclut les enregistrements marqués pour suppression lors du calcul des statistiques de l'optimiseur persistant, désactivé par défaut.

  • innodb_stats_transient_sample_pages: nombre de pages d'index à échantillonner lors de l'estimation de la cardinalité et d'autres statistiques pour les colonnes d'index (telles que celles calculées par la table d'analyse). La valeur par défaut est 8. L'augmentation de cette valeur peut améliorer la précision des statistiques d'index, améliorant ainsi les plans d'exécution des requêtes, mais au prix d'une augmentation des E/S lors de l'ouverture des tables InnoDB ou du recalcul des statistiques. Ce paramètre ne s'applique que s'il est désactivé pour la table innodb_stats_persistent, s'il est activé, INNODB_STATS_PERSISTil est appliqué INNODB_STATS_PERSIST_SAMPLE_PAGESà la placeinnodb_stats_sample_pages

Résumer:

1. Les informations statistiques non persistantes seront automatiquement mises à jour dans les situations suivantes :

  1. Exécuter ANALYSER TABLE
  2. innodb_stats_on_metadata=ONDans ce cas, exécutez SHOW TABLE STATUS, SHOW INDEX et interrogez les TABLES et STATISTICS sous INFORMATION_SCHEMA.
  3. Avec la fonction --auto-rehash activée, utilisez le client MySQL pour vous connecter
  4. La table est ouverte pour la première fois
  5. Depuis la dernière mise à jour des informations statistiques, les données du tableau 1/16 ont été modifiées.

Les inconvénients des statistiques non persistantes sont évidents. Si un grand nombre de tables commencent à mettre à jour les statistiques après le redémarrage de la base de données, cela aura un impact important sur l'instance, c'est pourquoi des statistiques persistantes sont actuellement utilisées.

2. Les statistiques de persistance seront automatiquement mises à jour dans les situations suivantes :

  1. INNODB_STATS_AUTO_RECALC=ONDans ce cas, 10% des données du tableau sont modifiées

  2. Ajouter un nouvel index

3. Traitement des informations statistiques inexactes

Nous avons vérifié le plan d'exécution et constaté que l'index correct n'a pas été utilisé. Si cela est dû à une grande différence dans les informations statistiques dans innodb_index_stats, cela peut être traité des manières suivantes :

  1. Mettez à jour manuellement les informations statistiques. Veuillez noter que des verrous de lecture seront ajoutés lors de l'exécution :

ANALYZETABLE TABLE_NAME ;

  1. Si les informations statistiques sont toujours inexactes après la mise à jour, vous pouvez envisager d'ajouter des pages de données pour l'échantillonnage du tableau. Il existe deux manières de les modifier :

​ a. La INNODB_STATS_PERSISTENT_SAMPLE_PAGESvaleur par défaut des variables globales est 20 ;

​ b. Un seul tableau peut spécifier l'échantillonnage du tableau :

ALTER TABLE TABLE_NAME STATS_SAMPLE_PAGES=40;

Après test, STATS_SAMPLE_PAGESla valeur maximale ici est de 65535. Si elle dépasse, une erreur sera signalée.

​ c. Mettez à jour manuellement les statistiques innodb_table_statsdes innodb_index_statstables (la modification de ces deux tables ne générera pas de binlog), puis utilisez FLUSH TABLE tbl_namedes instructions pour charger les statistiques mises à jour.


Profitez de GreatSQL :)

À propos de GreatSQL

GreatSQL est une base de données open source nationale indépendante adaptée aux applications financières. Elle possède de nombreuses fonctionnalités de base telles que des performances élevées, une fiabilité élevée, une grande facilité d'utilisation et une sécurité élevée. Elle peut être utilisée en remplacement facultatif de MySQL ou du serveur Percona. et est utilisé dans des environnements de production en ligne, entièrement gratuit et compatible avec MySQL ou Percona Server.

Liens connexes : Communauté GreatSQL Gitee GitHub Bilibili

Communauté GreatSQL :

image

Suggestions et commentaires de récompenses de la communauté : https://greatsql.cn/thread-54-1-1.html

Détails de la soumission primée du blog communautaire : https://greatsql.cn/thread-100-1-1.html

(Si vous avez des questions sur l'article ou si vous avez des idées uniques, vous pouvez accéder au site Web officiel de la communauté pour les poser ou les partager ~)

Groupe d'échange technique :

Groupe WeChat et QQ :

Groupe QQ : 533341697

Groupe WeChat : ajoutez GreatSQL Community Assistant (WeChat ID : wanlidbc) comme ami et attendez que l'assistant de communauté vous ajoute au groupe.

Linus a pris les choses en main pour empêcher les développeurs du noyau de remplacer les tabulations par des espaces. Son père est l'un des rares dirigeants capables d'écrire du code, son deuxième fils est directeur du département de technologie open source et son plus jeune fils est un noyau. contributeur à l'open source. Huawei : Il a fallu 1 an pour convertir 5 000 applications mobiles couramment utilisées Migration complète vers Hongmeng Java est le langage le plus sujet aux vulnérabilités tierces Wang Chenglu, le père de Hongmeng : l'open source Hongmeng est la seule innovation architecturale. dans le domaine des logiciels de base en Chine, Ma Huateng et Zhou Hongyi se serrent la main pour « éliminer les rancunes ». Ancien développeur de Microsoft : les performances de Windows 11 sont « ridiculement mauvaises » " Bien que ce que Laoxiangji est open source, ce ne soit pas le code, les raisons qui le sous-tendent. sont très réconfortants. Meta Llama 3 est officiellement publié. Google annonce une restructuration à grande échelle.
{{o.name}}
{{m.nom}}

Je suppose que tu aimes

Origine my.oschina.net/GreatSQL/blog/11054458
conseillé
Classement