FirebirdSQL logo

MON$MEMORY_USAGE

Statistiques d’utilisation de la mémoire.

Table 1. Description des colonnes de la table MON$MEMORY_USAGE
Nom de la colonne Type de données Description

MON$STAT_ID

INTEGER

Id.

MON$STAT_GROUP

SMALLINT

Groupe de statistiques :

  • 0 — base de données (database);

  • 1 — connexion à la base de données (connection);

  • 2 — transaction (transaction);

  • 3 — statement (statement);

  • 4 — Appel (call).

MON$MEMORY_USED

BIGINT

Quantité de mémoire utilisée, en octets. Informations sur les allocations de mémoire de haut niveau effectuées par le serveur à partir de pools. Peut être utile pour repérer les fuites de mémoire et la consommation excessive de mémoire dans les connexions, les procédures, etc.

MON$MEMORY_ALLOCATED

BIGINT

La quantité de mémoire allouée par le système d’exploitation, en octets. Informations sur l’allocation de mémoire de bas niveau faite par le gestionnaire de mémoire de Firebird — la quantité de mémoire allouée par le système d’exploitation, ce qui permet de contrôler la consommation de mémoire physique. Note, toutes les entrées de cette colonne n’ont pas des valeurs non nulles. Les petites allocations de mémoire ne sont pas fixées ici, mais ajoutées au pool de mémoire de la base de données. Seuls MON$DATABASE (MON$STAT_GROUP = 0) et les objets liés à l’allocation de mémoire ont des valeurs non nulles.

MON$MAX_MEMORY_USED

BIGINT

Le nombre maximum d’octets utilisés par cet objet.

MON$MAX_MEMORY_ALLOCATED

BIGINT

Le nombre maximum d’octets alloués par le système d’exploitation à un objet donné.

Note

Les compteurs associés aux enregistrements de niveau base de données MON$DATABASE (MON$STAT_GROUP = 0) indiquent les allocations de mémoire pour toutes les connexions. Dans les architectures Classic et SuperClassic, les compteurs nuls indiquent qu’il n’y a pas de cache partagé dans ces architectures.

Example 1. Récupérer les 10 requêtes qui consomment le plus de mémoire
SELECT STMT.MON$ATTACHMENT_ID, STMT.MON$SQL_TEXT, MEM.MON$MEMORY_USED
FROM MON$MEMORY_USAGE MEM
   NATURAL JOIN MON$STATEMENTS STMT
ORDER BY MEM.MON$MEMORY_USED DESC
FETCH FIRST 10 ROWS ONLY

MON$RECORD_STATS

Statistiques au niveau des enregistrements.

Table 1. Description des colonnes de la table MON$RECORD_STATS
Nom de la colonne Type de données Description

MON$STAT_ID

INTEGER

Id.

MON$STAT_GROUP

SMALLINT

Groupe de statistiques :

  • 0 — base de données (database);

  • 1 — connexion à la base de données (connection);

  • 2 — transaction (transaction);

  • 3 — statement (statement);

  • 4 — Appel (call).

MON$RECORD_SEQ_READS

BIGINT

Le nombre d’enregistrements lus séquentiellement.

MON$RECORD_IDX_READS

BIGINT

Le nombre d’enregistrements lus via un index.

MON$RECORD_INSERTS

BIGINT

Le nombre d’enregistrements insérés.

MON$RECORD_UPDATES

BIGINT

Le nombre d’enregistrements mis à jour.

MON$RECORD_DELETES

BIGINT

Le nombre d’enregistrements supprimés.

MON$RECORD_BACKOUTS

BIGINT

Nombre de suppressions de versions d’enregistrements créés par le retour en arrière (enregistrements sauvegardés).

MON$RECORD_PURGES

BIGINT

Le nombre d’enregistrements purgés supprimés.

MON$RECORD_EXPUNGES

BIGINT

Nombre de fois où d’anciennes versions d’enregistrements (enregistrements purgés) ont été supprimées.

MON$RECORD_LOCKS

BIGINT

Nombre d’entrées de lecture utilisant la phrase WITH LOCK.

MON$RECORD_WAITS

BIGINT

Nombre de tentatives de mise à jour/modification/blocage d’enregistrements appartenant à plusieurs transactions actives. La transaction est en mode WAIT.

MON$RECORD_CONFLICTS

BIGINT

Nombre d’échecs de tentatives de mise à jour/modification/blocage d’enregistrements appartenant à plusieurs transactions actives. Dans de telles situations, un conflit de mise à jour (UPDATE CONFLICT) est signalé.

MON$BACKVERSION_READS

BIGINT

Nombre de versions lues lors de la recherche des versions visibles des enregistrements.

MON$FRAGMENT_READS

BIGINT

Nombre de fragments d’enregistrement lus.

MON$RECORD_RPT_READS

BIGINT

Nombre d’enregistrements relus.

MON$RECORD_IMGC

BIGINT

Nombre d’entrées nettoyées par la collecte intermédiaire des déchets.

Les compteurs de cet table sont cumulatifs et accumulent les informations pour chacun des groupes statistiques.

docnext count = 2

MON$STATEMENTS

Les instructions SQL à exécuter.

Table 1. Description des colonnes de la table MON$STATEMENTS
Nom de la colonne Type de données Description

MON$STATEMENT_ID

BIGINT

ID de l’instruction SQL.

MON$ATTACHMENT_ID

BIGINT

Id de l’attachement

MON$TRANSACTION_ID

BIGINT

Id de la transaction

MON$STATE

SMALLINT

Statut d’opérateur :

  • 0 — inactif (idle);

  • 1 — actif (active);

  • 2 — suspendu (stalled).

MON$TIMESTAMP

TIMESTAMP

Date et heure de début de l’activité de l’opérateur.

MON$SQL_TEXT

BLOB TEXT

Texte de l’instruction SQL.

MON$STAT_ID

INTEGER

Id.

MON$EXPLAINED_PLAN

BLOB TEXT

Plan de l’opérateur sous forme d’explication.

MON$STATEMENT_TIMEOUT

INTEGER

Délai d’attente SQL au niveau de l’instruction SQL. Contient la valeur du délai d’attente définie au niveau de la connexion/de l’opérateur, en millisecondes. Si le délai n’est pas défini — 0.

MON$STATEMENT_TIMER

TIMESTAMP

Heure d’expiration de la minuterie de l’instruction SQL. Contient NULL si le délai d’attente de l’instruction SQL n’est pas défini, ou si aucune minuterie n’est en cours d’exécution.

MON$COMPILED_STATEMENT_ID

BIGINT

L’identifiant de la requête compilée (une référence à MON$COMPILED_STATEMENTS).

L’état de l’instruction STALLED est "paused". Il est possible qu’une requête qui a commencé son exécution, n’est pas encore terminée, mais n’est pas en cours d’exécution. Par exemple, elle attend des paramètres d’entrée ou une autre récupération du client.

Example 1. Afficher les demandes actives, à l’exception de celles qui s’exécutent sur leur propre connexion
SELECT ATT.MON$USER, ATT.MON$REMOTE_ADDRESS, STMT.MON$SQL_TEXT, STMT.MON$TIMESTAMP
FROM MON$ATTACHMENTS ATT
  JOIN MON$STATEMENTS STMT ON ATT.MON$ATTACHMENT_ID = STMT.MON$ATTACHMENT_ID
WHERE ATT.MON$ATTACHMENT_ID <> CURRENT_CONNECTION
  AND STMT.MON$STATE = 1

Utilisation de MON$STATEMENTS pour annuler des requêtes

Les tables de surveillance sont en lecture seule, mais le serveur a un mécanisme intégré pour supprimer (et seulement supprimer) les entrées de la table MON$STATEMENTS, permettant ainsi de mettre fin à la requête active.

Note
  • Une tentative d’annulation des requêtes n’est pas effectuée s’il n’y a pas d’instructions en cours d’exécution dans la connexion.

  • Après l’annulation d’une requête, les fonctions API d’exécution et de récupération renverront le code d’erreur isc_cancelled.

  • Les demandes ultérieures dans cette connexion ne sont pas interdites.

  • L’annulation de la demande n’est pas synchrone, l’opérateur marque seulement la demande pour l’annulation, et l’annulation elle-même est effectuée de manière asynchrone par le noyau.

Example 1. Annuler toutes les demandes actives pour une connexion donnée
DELETE FROM MON$STATEMENTS
WHERE MON$ATTACHMENT_ID = 32