Tous les produits
Search
Centre de documentation

PolarDB:Spécifier une politique de collecte des statistiques

Dernière mise à jour :Aug 11, 2026

PolarDB-X collecte les statistiques en arrière-plan pour permettre à l'optimiseur basé sur les coûts (CBO) de générer des plans d'exécution précis. Des statistiques obsolètes ou manquantes entraînent des plans sous-optimaux et ralentissent les requêtes.

Cette rubrique décrit les trois politiques de collecte des statistiques, leurs conditions de déclenchement ainsi que les méthodes pour contrôler ou arrêter la collecte.

Politiques de collecte des statistiques

PolarDB-X applique trois politiques de collecte, chacune avec une condition de déclenchement spécifique.

Politique Déclencheur Modèle SQL Paramètre
Analyse automatique Une fois par semaine, entre 02:00 et 05:00 Requêtes SQL contenant une clause WHERE (RAND() < 3.9623395E-4) ; requêtes SQL avec une adresse IP nulle dans le commentaire ; requêtes SQL appelant la fonction HYPERLOGLOG ENABLE_BACKGROUND_STATISTIC_COLLECTION
Requêtes sur INFORMATION_SCHEMA Une fois par jour, entre 02:00 et 05:00 SELECT table_schema, table_name, table_rows FROM information_schema.tables WHERE table_schema IN (...) AND table_name IN (...) N/A
Collecte par feedback en temps réel Lorsque des opérations INSERT ou DELETE modifient plus de 20 % des lignes précédemment stockées dans la table Mêmes modèles SQL que l'analyse automatique N/A

Impact sur les IOPS

Augmentation des IOPS pendant la fenêtre de collecte

Pour les tables volumineuses, les IOPS des nœuds de données augmentent durant la fenêtre de collecte de 02:00 à 05:00. Ce comportement est normal.

Augmentation des IOPS hors fenêtre de collecte

Si les IOPS augmentent en dehors de la fenêtre planifiée, l'une des situations suivantes se produit :

  • Tâche de collecte dépassant le temps imparti : La table est suffisamment volumineuse pour qu'une seule table logique nécessite un traitement plus long que la fenêtre planifiée. La tâche a démarré à 02:00 mais s'exécute encore après 05:00.

  • Déclenchement de la collecte par feedback en temps réel : Une opération INSERT ou DELETE importante a franchi le seuil de 20 %, provoquant l'exécution prolongée de la tâche de collecte associée.

Désactiver la collecte des statistiques en arrière-plan

Pour empêcher l'exécution de la collecte aux premières heures de la matinée, définissez ENABLE_BACKGROUND_STATISTIC_COLLECTION sur False dans la page Parameter Settings de la console PolarDB-X.

Ce paramètre désactive à la fois l'analyse automatique et la collecte par feedback en temps réel. Après la désactivation, exécutez manuellement l'instruction suivante pendant les heures creuses afin de maintenir les statistiques à jour :

ANALYZE TABLE <table_name>;

Exécutez ANALYZE TABLE régulièrement si vos tables subissent des mises à jour fréquentes. Pour les tables dont les mises à jour sont peu fréquentes ou prévisibles, espacez les exécutions.

Arrêter une tâche de collecte en cours d'exécution

Pour arrêter une tâche de collecte déjà en cours d'exécution :

  1. Consultez les instructions SQL en cours d'exécution sur le nœud de données :

    SHOW FULL PHYSICAL_PROCESSLIST WHERE INFO LIKE '%rand%';
  2. Identifiez l'instruction qui collecte les statistiques, puis exécutez une instruction KILL pour l'arrêter :

    KILL '<node_id>-<shard_id>-<statement_id>';

    L'identifiant kill utilise le format suivant :

    Champ Description Exemple
    node_id ID du nœud de données 0
    shard_id ID du shard de base de données 0
    statement_id ID de l'instruction SQL à arrêter 222

    Par exemple, KILL '0-0-222'; arrête l'instruction 222 sur le nœud 0, shard 0.