Tous les produits
Search
Centre de documentation

PolarDB:Performance Agent

Dernière mise à jour :Aug 11, 2026

Performance Agent est un plug-in PolarDB for MySQL qui écrit des statistiques de performance au niveau du nœud dans une table en mémoire, selon un intervalle configurable. Interrogez directement cette table via SQL ou connectez-la à une plateforme de supervision telle que Grafana pour suivre en temps réel le processeur, la mémoire, les E/S, les connexions et les métriques du moteur InnoDB.

Prérequis

Avant de commencer, assurez-vous de disposer des éléments suivants :

Fonctionnement

Performance Agent collecte les données de performance selon un intervalle configurable et écrit chaque snapshot sous forme de ligne dans la table mémoire PERF_STATISTICS de la base de données système performance_schema. Cette table conserve les données de performance générées durant la période la plus récente.

Remarque

L'activation de performance_schema permet de superviser les verrous, les transactions et les métriques mémoire. Toutefois, elle consomme une quantité importante de mémoire système et peut affecter les performances du cluster. Elle est désactivée par défaut dans PolarDB for MySQL. Si vous l'activez, configurez uniquement les métriques nécessaires en fonction des spécifications de votre cluster et des ressources disponibles.

Paramètres

Paramètre Description Valeur par défaut
performance_agent_enabled Active ou désactive Performance Agent. Valeurs valides : ON, OFF. ON
performance_agent_interval Fréquence de collecte des données par Performance Agent. Valeurs valides : 1–60. Unité : secondes. 1
performance_agent_perfstat_volume_size Nombre maximal de lignes dans la table PERF_STATISTICS. 3600

Avec les valeurs par défaut (interval = 1, volume_size = 3600), la table conserve environ une heure de données.

Pour modifier ces paramètres, consultez Spécifier les paramètres du cluster et du nœud.

Table PERF_STATISTICS

Schéma

CREATE TEMPORARY TABLE `PERF_STATISTICS` (
  `TIME` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  `PROCS_MEM_USAGE` double NOT NULL DEFAULT '0',
  `PROCS_CPU_RATIO` double NOT NULL DEFAULT '0',
  `PROCS_IOPS` double NOT NULL DEFAULT '0',
  `PROCS_IO_READ_BYTES` bigint(21) NOT NULL DEFAULT '0',
  `PROCS_IO_WRITE_BYTES` bigint(21) NOT NULL DEFAULT '0',
  `MYSQL_CONN_ABORT` int(11) NOT NULL DEFAULT '0',
  `MYSQL_CONN_CREATED` int(11) NOT NULL DEFAULT '0',
  `MYSQL_USER_CONN_COUNT` int(11) NOT NULL DEFAULT '0',
  `MYSQL_CONN_RUNNING` int(11) NOT NULL DEFAULT '0',
  `MYSQL_LOCK_IMMEDIATE` int(11) NOT NULL DEFAULT '0',
  `MYSQL_LOCK_WAITED` int(11) NOT NULL DEFAULT '0',
  `MYSQL_COM_INSERT` int(11) NOT NULL DEFAULT '0',
  `MYSQL_COM_UPDATE` int(11) NOT NULL DEFAULT '0',
  `MYSQL_COM_DELETE` int(11) NOT NULL DEFAULT '0',
  `MYSQL_COM_SELECT` int(11) NOT NULL DEFAULT '0',
  `MYSQL_COM_COMMIT` int(11) NOT NULL DEFAULT '0',
  `MYSQL_COM_ROLLBACK` int(11) NOT NULL DEFAULT '0',
  `MYSQL_COM_PREPARE` int(11) NOT NULL DEFAULT '0',
  `MYSQL_LONG_QUERY` int(11) NOT NULL DEFAULT '0',
  `MYSQL_TCACHE_GET` bigint(21) NOT NULL DEFAULT '0',
  `MYSQL_TCACHE_MISS` bigint(21) NOT NULL DEFAULT '0',
  `MYSQL_TMPFILE_CREATED` int(11) NOT NULL DEFAULT '0',
  `MYSQL_TMP_TABLES` int(11) NOT NULL DEFAULT '0',
  `MYSQL_TMP_DISKTABLES` int(11) NOT NULL DEFAULT '0',
  `MYSQL_SORT_MERGE` int(11) NOT NULL DEFAULT '0',
  `MYSQL_SORT_ROWS` int(11) NOT NULL DEFAULT '0',
  `MYSQL_BYTES_RECEIVED` bigint(21) NOT NULL DEFAULT '0',
  `MYSQL_BYTES_SENT` bigint(21) NOT NULL DEFAULT '0',
  `MYSQL_BINLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
  `MYSQL_IOLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
  `MYSQL_RELAYLOG_OFFSET` int(11) NOT NULL DEFAULT '0',
  `EXTRA` json NOT NULL DEFAULT 'null'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Référence des colonnes

Les colonnes sont regroupées par domaine fonctionnel.

Ressources système

Colonne Description
TIME Horodatage de la ligne. Format : yyyy-MM-dd HH:mm:ss.
PROCS_MEM_USAGE Mémoire physique utilisée par le cluster. Unité : octets.
PROCS_CPU_RATIO Taux d'utilisation du processeur.
PROCS_IOPS Nombre d'opérations d'E/S effectuées.
PROCS_IO_READ_BYTES Données lues par les opérations d'E/S. Unité : octets.
PROCS_IO_WRITE_BYTES Données écrites par les opérations d'E/S. Unité : octets.

Connexions et sessions

Colonne Description
MYSQL_CONN_ABORT Nombre de connexions fermées.
MYSQL_CONN_CREATED Nombre de nouvelles connexions.
MYSQL_USER_CONN_COUNT Nombre total de connexions.
MYSQL_CONN_RUNNING Nombre de connexions actives.

Verrous

Colonne Description
MYSQL_LOCK_IMMEDIATE Nombre de verrous détenus.
MYSQL_LOCK_WAITED Nombre d'événements d'attente de verrou.

Instructions SQL

Colonne Description
MYSQL_COM_INSERT Nombre d'instructions INSERT exécutées.
MYSQL_COM_UPDATE Nombre d'instructions UPDATE exécutées.
MYSQL_COM_DELETE Nombre d'instructions DELETE exécutées.
MYSQL_COM_SELECT Nombre d'instructions SELECT exécutées.
MYSQL_COM_COMMIT Nombre de transactions validées explicitement.
MYSQL_COM_ROLLBACK Nombre de transactions annulées.
MYSQL_COM_PREPARE Nombre d'instructions préparées.
MYSQL_LONG_QUERY Nombre de requêtes lentes.

Cache et objets temporaires

Colonne Description
MYSQL_TCACHE_GET Nombre de succès de cache.
MYSQL_TCACHE_MISS Nombre d'échecs de cache.
MYSQL_TMPFILE_CREATED Nombre de fichiers temporaires créés.
MYSQL_TMP_TABLES Nombre de tables temporaires créées.
MYSQL_TMP_DISKTABLES Nombre de tables temporaires sur disque créées.

Opérations de tri

Colonne Description
MYSQL_SORT_MERGE Nombre de fusions et tris de données.
MYSQL_SORT_ROWS Nombre de lignes triées.

Réseau et réplication

Colonne Description
MYSQL_BYTES_RECEIVED Données reçues par le nœud. Unité : octets.
MYSQL_BYTES_SENT Données envoyées par le nœud. Unité : octets.
MYSQL_BINLOG_OFFSET Taille du fichier journal binaire généré. Unité : octets.
MYSQL_IOLOG_OFFSET Taille du fichier journal binaire envoyé par le nœud principal. Unité : octets.
MYSQL_RELAYLOG_OFFSET Taille du fichier journal binaire appliqué par le nœud en lecture seule. Unité : octets.

Moteur InnoDB (colonne EXTRA)

La colonne EXTRA stocke les statistiques du moteur InnoDB sous forme d'objet JSON. Les valeurs correspondent à celles retournées par SHOW STATUS.

Utilisez des expressions de chemin JSON pour extraire des champs individuels :

SELECT TIME, EXTRA->'$.INNODB_ROWS_READ', EXTRA->'$.INNODB_ROWS_INSERTED'
FROM performance_schema.PERF_STATISTICS
ORDER BY TIME DESC
LIMIT 30;
Champ Description
INNODB_TRX_CNT Nombre de transactions.
INNODB_DATA_READ Données lues. Unité : octets.
INNODB_IBUF_SIZE Nombre de pages fusionnées.
INNODB_LOG_WAITS Nombre d'attentes d'InnoDB pour l'écriture des données de journal.
INNODB_MAX_PURGE Nombre de transactions supprimées.
INNODB_N_WAITING Nombre de verrous attendus par InnoDB.
INNODB_ROWS_READ Nombre de lignes lues.
INNODB_LOG_WRITES Nombre d'écritures de données de journal par InnoDB.
INNODB_IBUF_MERGES Nombre de fusions de données effectuées par InnoDB.
INNODB_DATA_WRITTEN Données écrites. Unité : octets.
INNODB_DBLWR_WRITES Nombre d'opérations d'écriture double.
INNODB_IBUF_SEGSIZE Taille des données insérées dans le tampon d'insertion.
INNODB_ROWS_DELETED Nombre de lignes supprimées.
INNODB_ROWS_UPDATED Nombre de lignes mises à jour.
INNODB_COMMIT_TRXCNT Nombre de transactions validées.
INNODB_IBUF_FREELIST Longueur de la liste inactive.
INNODB_MYSQL_TRX_CNT Nombre de transactions MySQL.
INNODB_ROWS_INSERTED Nombre de lignes insérées.
INNODB_ACTIVE_TRX_CNT Nombre de transactions actives.
INNODB_OS_LOG_WRITTEN Données de journal écrites sur le disque. Unité : octets.
INNODB_ACTIVE_VIEW_CNT Nombre de vues actives.
INNODB_RSEG_HISTORY_LEN Longueur de la table TRX_RSEG_HISTORY.
INNODB_AVG_COMMIT_TRXTIME Temps moyen de validation d'une transaction.
INNODB_MAX_COMMIT_TRXTIME Temps maximal de validation d'une transaction.
INNODB_DBLWR_PAGES_WRITTEN Nombre de pages écrites par les opérations d'écriture double.

Exemples de requêtes

Tous les exemples interrogent performance_schema.PERF_STATISTICS et trient les résultats par TIME DESC.

Récupérer des snapshots bruts

Interrogez l'utilisation du processeur et de la mémoire pour les 30 dernières secondes :

MySQL> SELECT TIME, PROCS_MEM_USAGE, PROCS_CPU_RATIO
       FROM performance_schema.PERF_STATISTICS
       ORDER BY TIME DESC
       LIMIT 30;
+---------------------+-----------------+-----------------+
| TIME                | PROCS_MEM_USAGE | PROCS_CPU_RATIO |
+---------------------+-----------------+-----------------+
| 2020-02-27 11:15:36 |       857812992 |           18.55 |
| 2020-02-27 11:15:35 |       857808896 |           18.54 |
| 2020-02-27 11:15:34 |       857268224 |           19.64 |
| 2020-02-27 11:15:33 |       857268224 |           21.06 |
| 2020-02-27 11:15:32 |       857264128 |           20.39 |
| 2020-02-27 11:15:31 |       857272320 |           20.32 |
| 2020-02-27 11:15:30 |       857272320 |           21.35 |
| 2020-02-27 11:15:29 |       857272320 |            28.8 |
| 2020-02-27 11:15:28 |       857268224 |           29.08 |
| 2020-02-27 11:15:27 |       857268224 |           26.92 |
| 2020-02-27 11:15:26 |       857268224 |           23.84 |
| 2020-02-27 11:15:25 |       857264128 |           13.76 |
| 2020-02-27 11:15:24 |       857264128 |           15.12 |
| 2020-02-27 11:15:23 |       857264128 |           14.76 |
| 2020-02-27 11:15:22 |       857264128 |           15.38 |
| 2020-02-27 11:15:21 |       857260032 |           13.23 |
| 2020-02-27 11:15:20 |       857260032 |           12.75 |
| 2020-02-27 11:15:19 |       857260032 |           12.17 |
| 2020-02-27 11:15:18 |       857255936 |           13.22 |
| 2020-02-27 11:15:17 |       857255936 |           20.51 |
| 2020-02-27 11:15:16 |       857255936 |           28.74 |
| 2020-02-27 11:15:15 |       857251840 |           29.85 |
| 2020-02-27 11:15:14 |       857251840 |           29.31 |
| 2020-02-27 11:15:13 |       856981504 |           28.85 |
| 2020-02-27 11:15:12 |       856981504 |           29.19 |
| 2020-02-27 11:15:11 |       856977408 |           29.12 |
| 2020-02-27 11:15:10 |       856977408 |           29.32 |
| 2020-02-27 11:15:09 |       856977408 |            29.2 |
| 2020-02-27 11:15:08 |       856973312 |           29.36 |
| 2020-02-27 11:15:07 |       856973312 |           28.79 |
+---------------------+-----------------+-----------------+
30 rows in set (0.08 sec)

Interrogez les lignes InnoDB lues et insérées au cours des 30 dernières secondes :

MySQL> SELECT TIME, EXTRA->'$.INNODB_ROWS_READ', EXTRA->'$.INNODB_ROWS_INSERTED'
       FROM performance_schema.PERF_STATISTICS
       ORDER BY TIME DESC
       LIMIT 30;
+---------------------+-----------------------------+---------------------------------+
| TIME                | EXTRA->'$.INNODB_ROWS_READ' | EXTRA->'$.INNODB_ROWS_INSERTED' |
+---------------------+-----------------------------+---------------------------------+
| 2020-02-27 11:22:17 | 39209                       | 0                               |
| 2020-02-27 11:22:16 | 36098                       | 0                               |
| 2020-02-27 11:22:15 | 38035                       | 0                               |
| 2020-02-27 11:22:14 | 37384                       | 0                               |
| 2020-02-27 11:22:13 | 38336                       | 0                               |
| 2020-02-27 11:22:12 | 33946                       | 0                               |
| 2020-02-27 11:22:11 | 36301                       | 0                               |
| 2020-02-27 11:22:10 | 36835                       | 0                               |
| 2020-02-27 11:22:09 | 36900                       | 0                               |
| 2020-02-27 11:22:08 | 36402                       | 0                               |
| 2020-02-27 11:22:07 | 39672                       | 0                               |
| 2020-02-27 11:22:06 | 39316                       | 0                               |
| 2020-02-27 11:22:05 | 37830                       | 0                               |
| 2020-02-27 11:22:04 | 36396                       | 0                               |
| 2020-02-27 11:22:03 | 34820                       | 0                               |
| 2020-02-27 11:22:02 | 37350                       | 0                               |
| 2020-02-27 11:22:01 | 39463                       | 0                               |
| 2020-02-27 11:22:00 | 38419                       | 0                               |
| 2020-02-27 11:21:59 | 37673                       | 0                               |
| 2020-02-27 11:21:58 | 35117                       | 0                               |
| 2020-02-27 11:21:57 | 36140                       | 0                               |
| 2020-02-27 11:21:56 | 37592                       | 0                               |
| 2020-02-27 11:21:55 | 39765                       | 0                               |
| 2020-02-27 11:21:54 | 35553                       | 0                               |
| 2020-02-27 11:21:53 | 35882                       | 0                               |
| 2020-02-27 11:21:52 | 37061                       | 0                               |
| 2020-02-27 11:21:51 | 40699                       | 0                               |
| 2020-02-27 11:21:50 | 39608                       | 0                               |
| 2020-02-27 11:21:49 | 39317                       | 0                               |
| 2020-02-27 11:21:48 | 37413                       | 0                               |
+---------------------+-----------------------------+---------------------------------+
30 rows in set (0.08 sec)

Connexion à une plateforme de supervision

Connectez PERF_STATISTICS à une plateforme de supervision externe pour visualiser les métriques dans le temps. La capture d'écran ci-dessous présente un exemple de tableau de bord Grafana connecté aux données de performance de PolarDB.

Grafana