FirebirdSQL logo

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

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

docnext count = 1

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