FirebirdSQL logo

MON$IO_STATS

Comme mentionné ci-dessus, la table MON$IO_STATS peut être utilisée pour vous aider à déterminer les performances de votre cache tampon. La structure de la table est la suivante :

MONS$STAT_ID

ID statistique.

MONS$STAT_GROUP

Groupe de statistiques. Des statistiques sont recueillies pour les groupes suivants :

  • 0: The database as a whole.

  • 1: Attachments.

  • 2: Transactions.

  • 3: Statements.

  • 4: Calls.

MON$PAGE_READS

Le nombre de pages lues. Il s’agit des pages lues à partir du disque et non du cache.

MON$PAGE_WRITES

Nombre de pages réécrites sur le disque.

MON$PAGE_FETCHES

Nombre de pages lues à partir du cache plutôt que du disque.

MON$PAGE_MARKS

Le nombre de pages a changé dans le cache. Il est possible que tous n’aient pas été réécrits sur disque.

Pour inspecter les statistiques actuelles de la base de données dans son ensemble, nous utiliserions la requête suivante dans isql :

tux> isql employee
Database:  employee

SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS
CON> FROM MON$IO_STATS
CON> WHERE MON$STAT_GROUP = 0;
     MON$PAGE_READS     MON$PAGE_WRITES    MON$PAGE_FETCHES      MON$PAGE_MARKS
=================== =================== =================== ===================
                134                 526               13851                 529

Les résultats de ce qui précède montrent que :

  • Jusqu’à présent, 134 pages ont dû être lues physiquement à partir du disque dans le cache.

  • 13 851 pages, en revanche, ont été lues directement à partir du cache.

  • 529 pages, dans le cache, ont été modifiées d’une manière ou d’une autre.

  • 526 pages modifiées ont été copiées du cache sur le disque.

Nous pouvons donc supposer que, bien qu’un petit nombre de pages aient été lues dans le cache, il n’y a rien que nous puissions faire pour éviter cela. Lorsque la base de données est démarrée, le cache est vide, lorsque les applications se connectent et accèdent à la base de données, diverses pages doivent être lues et le cache doit être rempli, de sorte que les lectures physiques seront une nécessité. Dans cet exemple, il semble qu’une fois que les pages sont dans le cache, elles sont consultées assez fréquemment, étant donné qu’il y a eu environ 103 lectures de cache pour chaque lecture physique.

Sur les 529 pages mises à jour - et il s’agit de pages système et de pages utilisateur - 526 ont été réécrites sur les disques physiques, mais trois restent encore en cache, non encore écrites.

Les résultats présentés ci-dessus montrent les performances du cache sur la durée de vie de la base de données jusqu’à présent. Nous pouvons réduire cela à nos pièces jointes actuelles en modifiant la requête pour sélectionner les lignes où le MON$STAT_GROUP est égal à 1.

SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS
CON> FROM MON$IO_STATS
CON> WHERE MON$STAT_GROUP = 1;
     MON$PAGE_READS     MON$PAGE_WRITES    MON$PAGE_FETCHES      MON$PAGE_MARKS
=================== =================== =================== ===================
                  0                   4                  87                   5
                134                 520               13619                 522

L’interprétation des statistiques ci-dessus est exactement la même que pour l’ensemble de la base de données.

Nous pouvons ensuite diagnostiquer les statistiques par transactions individuelles, comme suit :

SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS
CON> FROM MON$IO_STATS
CON> WHERE MON$STAT_GROUP = 2;
     MON$PAGE_READS     MON$PAGE_WRITES    MON$PAGE_FETCHES      MON$PAGE_MARKS
=================== =================== =================== ===================
                  0                   0                  60                   0
                  0                   0                   1                   0
                  0                   0                   1                   0
                  0                   0                  69                   0
                  0                   0                  93                   0
                  0                   0                  85                   0
                  0                   0                   1                   0
                  0                   0                   1                   0

Et, par des états individuelles :

SQL> SELECT MON$PAGE_READS, MON$PAGE_WRITES, MON$PAGE_FETCHES, MON$PAGE_MARKS
CON> FROM MON$IO_STATS
CON> WHERE MON$STAT_GROUP = 3;
     MON$PAGE_READS     MON$PAGE_WRITES    MON$PAGE_FETCHES      MON$PAGE_MARKS
=================== =================== =================== ===================
                  0                   0                   1                   0
                  0                   0                  38                   0
                  0                   0                   4                   0
                  0                   0                  18                   0
                  0                   0                 158                   0
                  0                   0                   1                   0
                  0                   0                   1                   0
                  0                   0                   1                   0
                  0                   0                   1                   0
                  0                   0                   1                   0
                  0                   0                   0                   0
                  0                   0                   1                   0
                  1                   0                  12                   0
                  0                   0                   2                   0
                  3                   0                1436                   0
                  0                   0                 101                   0
                  7                   0                 613                   0

Enfin, il est possible - et probablement le plus utile - de déterminer les statistiques de votre propre session. Vous pouvez trouver votre ID de pièce jointe à partir de CURRENT_CONNECTION et l’utiliser dans une requête qui se joint à MON$IO_STATS à l’aide de la colonne MON$STAT_ID.

SQL> SET LIST;

SQL> SELECT T.MON$ATTACHMENT_ID, T.MON$TRANSACTION_ID,
CON> IO.MON$PAGE_READS, IO.MON$PAGE_WRITES,
CON> IO.MON$PAGE_FETCHES, IO.MON$PAGE_MARKS
CON> FROM MON$TRANSACTIONS AS T
CON> JOIN MON$IO_STATS as IO
CON> ON (IO.MON$STAT_ID = T.MON$STAT_ID)
CON> WHERE T.MON$ATTACHMENT_ID = CURRENT_CONNECTION;
MON$ATTACHMENT_ID               12
MON$TRANSACTION_ID              218
MON$PAGE_READS                  5
MON$PAGE_WRITES                 0
MON$PAGE_FETCHES                66
MON$PAGE_MARKS                  0

MON$ATTACHMENT_ID               12
MON$TRANSACTION_ID              217
MON$PAGE_READS                  0
MON$PAGE_WRITES                 0
MON$PAGE_FETCHES                1
MON$PAGE_MARKS                  0

Appendices

Historique du document

L’historique exact du fichier est enregistré dans le dépôt git firebird-documentation ; voir https://github.com/FirebirdSQL/firebird-documentation

Historique des révisions

1.0

5. Jan 2010

ND

Création d’un nouveau manuel basé sur un message posté par Ann Harrison sur Firebird-support.

1.1

21 Jun 2010

ND

Modifié pour inclure le fait qu’il est possible d’extraire les statistiques de la connexion courante. Contrairement à ce qui a été dit précédemment.

1.2

28 May 2020

MK

Conversion du document en AsciiDoc.

1.2-fr

24 Jan 2024

@A

Traduction française du document anglais par @Arcantar.

docnext count = 1

Avis de licence

Le contenu de cette Documentation est soumis à la Licence de Documentation Publique Version 1.0 (la « Licence ») ;vous ne pouvez utiliser cette Documentation que si vous respectez les termes de la présente Licence.Des copies de la Licence sont disponibles à l’adresse suivante : https://www.firebirdsql.org/pdfmanual/pdl.pdf (PDF) et https://www.firebirdsql.org/manual/pdl.html (HTML).

La documentation originale s’intitule Firebird Database Cache Buffer.

L’auteur initial de la documentation originale est Norman Dunbar, à l’aide des données fournies par Ann Harrison.

Copyright © 2010–2020.Tous droits réservés.Contact initial avec l’écrivain: NormanDunbar at users dot sourceforge dot net.

Contribution: Martin Köditz – see document history.

Les parties créées par Martin Köditz sont protégées par le droit d’auteur © 2020.Tous droits réservés.Personne-ressource pour les contributeurs : martin dot koeditz at it dash syn dot de.