FirebirdSQL logo

MON$RECORD_STATS

MON$RECORD_STATS zeigt Statistiken auf Datensatzebene an.Die Zähler sind kumulativ nach Gruppe für jede Statistikgruppe.

Spaltenname Datentyp Beschreibung

MON$STAT_ID

INTEGER

Statistik-Kennung

MON$STAT_GROUP

SMALLINT

Statistik-Gruppen:

0 - Datenbank
1 - Verbindung
2 - Transaktion
3 - Statement
4 - Aufruf (Call)

MON$RECORD_SEQ_READS

BIGINT

Anzahl der sequenziell gelesenen Datensätze

MON$RECORD_IDX_READS

BIGINT

Anzahl der mittels Index gelesenen Datensätze

MON$RECORD_INSERTS

BIGINT

Anzahl der eingefügten Datensätze

MON$RECORD_UPDATES

BIGINT

Anzahl der aktualisierten Datensätze

MON$RECORD_DELETES

BIGINT

Anzahl der gelöschten Datensätze

MON$RECORD_BACKOUTS

BIGINT

Anzahl der Datensätze für die eine neue primäre Datensatzversion während eines Rollbacks oder Savepoint-Undo erstellt wurde.

MON$RECORD_PURGES

BIGINT

Anzahl der Datensätze für die die Versionskette nicht länger von der OAT (oldest active transaction) oder jüngeren Transaktionen benötigt wird.

MON$RECORD_EXPUNGES

BIGINT

Anzahl der Datensätze, in denen die Versionskette aufgrund von Löschungen innerhalb von Transaktionen gelöscht wird, die älter als die OAT (oldest active transaction) sind

MON$RECORD_LOCKS

BIGINT

Anzahl gesperrter Datensätze records

MON$RECORD_WAITS

BIGINT

Anzahl der Aktualisierungs-, Lösch- oder Sperrversuche für Datensätze, die anderen aktiven Transaktionen gehören.Die Transaktion befindet sich im WAIT-Modus.

MON$RECORD_CONFLICTS

BIGINT

Anzahl der erfolglosen Aktualisierungs-, Lösch- oder Sperrversuche für Datensätze, die anderen aktiven Transaktionen gehören.Diese werden als Aktualisierungskonflikte gemeldet.

MON$BACKVERSION_READS

BIGINT

Anzahl der gelesenen Back-Versionen, um sichtbare Datensätze zu finden

MON$FRAGMENT_READS

BIGINT

Anzahl der gelesenen fragmentierten Datensätze

MON$RECORD_RPT_READS

BIGINT

Anzahl der wiederholten Lesevorgänge von Datensätzen

MON$RECORD_IMGC

BIGINT

Anzahl der vom zwischengeschalteten Garbage Collector verarbeiteten Datensätze

MON$STATEMENTS

MON$STATEMENTS zeigt Anweisungen an, die zur Ausführung vorbereitet sind.

Spaltenname Datentyp Beschreibung

MON$STATEMENT_ID

INTEGER

Statement-Kennung

MON$ATTACHMENT_ID

INTEGER

Verbindungs-Kennung

MON$TRANSACTION_ID

INTEGER

Transaktions-Kennung

MON$STATE

SMALLINT

Statement-Status:

0 - Leerlauf (idle)
1 - Aktiv
2 - verzögert (stalled)

MON$TIMESTAMP

TIMESTAMP WITH TIME ZONE

Der Zeitpunkt an dem das Statement vorbereitet wurde.

MON$SQL_TEXT

BLOB TEXT

Statement-Text in SQL

MON$STAT_ID

INTEGER

Statistik-Kennung

MON$EXPLAINED_PLAN

BLOB TEXT

Erklärter Ausführungsplan

MON$STATEMENT_TIMEOUT

INTEGER

Zeitüberschreitung der Anweisung auf Verbindungsebene in Millisekunden.Wenn 0 gemeldet wird, gilt das Timeout von MON$ATTACHMENT.MON$STATEMENT_TIMEOUT für diese Verbindung.

MON$IDLE_TIMER

TIMESTAMP WITH TIME ZONE

Ablaufzeit des Statement-Timers

Der Status STALLED zeigt an, dass die Anweisung zum Zeitpunkt des Snapshots einen geöffneten Cursor hatte und darauf wartete, dass der Client den Abruf von Zeilen wieder aufnimmt.

Aktive Abfragen anzeigen, ausgenommen diejenigen, die in Ihrer Verbindung ausgeführt werden
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

docnext count = 2

Verwenden von MON$STATEMENTS zum Abbrechen einer Abfrage

Überwachungstabellen sind schreibgeschützt.Der Server verfügt jedoch über einen eingebauten Mechanismus zum Löschen (und nur zum Löschen) von Datensätzen in der Tabelle MON$STATEMENTS, der es ermöglicht, eine laufende Abfrage abzubrechen.

Note
Anmerkungen
  • Wenn derzeit keine Anweisungen in der Verbindung ausgeführt werden, wird jeder Versuch, Abfragen abzubrechen, nicht fortgesetzt

  • Nachdem eine Abfrage abgebrochen wurde, wird beim Aufrufen von API-Funktionen zum Ausführen/Abrufen ein Fehler mit dem Code isc_cancelled zurückgegeben

  • Nachfolgende Abfragen von dieser Verbindung werden wie gewohnt fortgesetzt

  • Der Abbruch der Anweisung erfolgt nicht synchron, sondern markiert nur die Anforderung der Stornierung, und die Stornierung selbst erfolgt asynchron durch den Server

Beispiel

Alle aktiven Abfragen für die angegebene Verbindung abbrechen:

DELETE FROM MON$STATEMENTS
  WHERE MON$ATTACHMENT_ID = 32

MON$TABLE_STATS

MON$TABLE_STATS gibt Statistiken auf Tabellenebene aus.

Spaltenname Datentyp Beschreibung

MON$STAT_ID

INTEGER

Statistikkennung

MON$STAT_GROUP

SMALLINT

Statistikgruppe:

0 - Datenbank
1 - Verbindung
2 - Transaktion
3 - Anweisung (Statement)
4 - Aufruf (Call)

MON$TABLE_NAME

CHAR(63)

Tabellenname

MON$RECORD_STAT_ID

INTEGER

Link zu MON$RECORD_STATS

Statistiken auf Datensatzebene für jede Tabelle für die aktuelle Verbindung abrufen
SELECT
  t.mon$table_name,
  r.mon$record_inserts,
  r.mon$record_updates,
  r.mon$record_deletes,
  r.mon$record_backouts,
  r.mon$record_purges,
  r.mon$record_expunges,
  ------------------------
  r.mon$record_seq_reads,
  r.mon$record_idx_reads,
  r.mon$record_rpt_reads,
  r.mon$backversion_reads,
  r.mon$fragment_reads,
  ------------------------
  r.mon$record_locks,
  r.mon$record_waits,
  r.mon$record_conflicts,
  ------------------------
  a.mon$stat_id
FROM mon$record_stats r
JOIN mon$table_stats t ON r.mon$stat_id = t.mon$record_stat_id
JOIN mon$attachments a ON t.mon$stat_id = a.mon$stat_id
WHERE a.mon$attachment_id = CURRENT_CONNECTION