FirebirdSQL logo

MON$TRANSACTIONS

MON$TRANSACTIONS meldet gestartete Transaktionen.

Spaltenname Datentyp Beschreibung

MON$TRANSACTION_ID

INTEGER

Transaktionskennung

MON$ATTACHMENT_ID

INTEGER

Verbindungskennung

MON$STATE

SMALLINT

Transaktionsstatus:

0 - Leerlauf (idle)
1 - Aktiv

MON$TIMESTAMP

TIMESTAMP WITH TIME ZONE

Zeitpunkt an dem die Transaktion gestartet wurde

MON$TOP_TRANSACTION

INTEGER

Top-Level-Transaktionsnummer (Kennung)

MON$OLDEST_TRANSACTION

INTEGER

Kennung der ältesten relevanten Transaktion (oldest [interesting] transaction (OIT))

MON$OLDEST_ACTIVE

INTEGER

Kennung der ältesten aktiven Transaktion (oldest active transaction (OAT))

MON$ISOLATION_MODE

SMALLINT

Isolationsmodus (Level):

0 - Konsistenz (Snapshot für Tabellenstabilität)
1 - Konkurrierend (Snapshot)
2 - Read Committed mit Datensatzversion
3 - Read Committed ohne Datensatzversion
4 - Read Committed Read Consistency

MON$LOCK_TIMEOUT

SMALLINT

Lock-Timeout:

-1 - warten (ewig)
0 - nicht warten
1 oder größer - Lock-Timeout in Sekunden

MON$READ_ONLY

SMALLINT

Gibt an, ob die Transaktion nur-lesend (Wert 1) oder lesend-schreibend (Wert 0) läuft

MON$AUTO_COMMIT

SMALLINT

Gibt an, ob automatisches Commit für die Transaktion verwendet wird (Wert 1) oder nicht (Wert 0)

MON$AUTO_UNDO

SMALLINT

Gibt an, ob der Logging-Mechanismus automatiches Undo für die Transaktion verwendet wird (Wert 1) oder nicht (Wert 0)

MON$STAT_ID

INTEGER

Statistikkennung

Alle Verbindungen abrufen, die Read Write-Transaktionen mit Isolationsstufe über Read Committed starten
SELECT DISTINCT a. *
FROM mon$attachments a
JOIN mon$transactions t ON a.mon$attachment_id = t.mon$attachment_id
WHERE NOT (t.mon$read_only = 1 AND t.mon$isolation_mode >= 2)

MON$CALL_STACK

MON $ CALL_STACK zeigt Aufrufe des Stacks von Abfragen an, die in gespeicherten Prozeduren und Triggern ausgeführt werden.

Spaltenname Datentyp Beschreibung

MON$CALL_ID

BIGINT

Aufruf-Kennung

MON$STATEMENT_ID

BIGINT

Der Bezeichner der SQL-Anweisung der obersten Ebene, die die Aufrufkette initiiert hat.Verwenden Sie diesen Bezeichner, um die Datensätze zur aktiven Anweisung in der Tabelle MON$STATEMENTS zu finden

MON$CALLER_ID

INTEGER

Die Kennung der aufrufenden Stored Procedure oder des aufrufenden Triggers

MON$OBJECT_NAME

CHAR(63)

PSQL-Objekt-Name (Module)

MON$OBJECT_TYPE

SMALLINT

PSQL-Objekt-Typ (Trigger oder Stored Procedure):

2 - Trigger
5 - Stored Procedure15 - Stored Function

MON$TIMESTAMP

TIMESTAMP WITH TIME ZONE

Datum und Zeitpunkt des Aufrufs

MON$SOURCE_LINE

INTEGER

Die Zeilennummer im SQL-Statement, welches zum Zeitpunkt des Snapshots gestartet wurde

MON$SOURCE_COLUMN

INTEGER

Die Spaltennummer im SQL-Statement, welches zum Zeitpunkt des Snapshots gestartet wurde

MON$STAT_ID

INTEGER

Statistik-Kennung

MON$PACKAGE_NAME

CHAR(63)

Paketname für gespeicherte Prozeduren oder Funktionen in einem Paket

Note

Informationen über Aufrufe während der Ausführung der EXECUTE STATEMENT-Anweisung gelangen nicht in die Aufrufliste.

Rufen Sie die Aufrufliste für alle Verbindungen außer Ihren eigenen ab
WITH RECURSIVE
  HEAD AS (
    SELECT
      CALL.MON$STATEMENT_ID, CALL.MON$CALL_ID,
      CALL.MON$OBJECT_NAME, CALL.MON$OBJECT_TYPE
    FROM MON$CALL_STACK CALL
    WHERE CALL.MON$CALLER_ID IS NULL
    UNION ALL
    SELECT
      CALL.MON$STATEMENT_ID, CALL.MON$CALL_ID,
      CALL.MON$OBJECT_NAME, CALL.MON$OBJECT_TYPE
    FROM MON$CALL_STACK CALL
      JOIN HEAD ON CALL.MON$CALLER_ID = HEAD.MON$CALL_ID
  )
SELECT MON$ATTACHMENT_ID, MON$OBJECT_NAME, MON$OBJECT_TYPE
FROM HEAD
  JOIN MON$STATEMENTS STMT ON STMT.MON$STATEMENT_ID = HEAD.MON$STATEMENT_ID
WHERE STMT.MON$ATTACHMENT_ID <> CURRENT_CONNECTION

docnext count = 8

MON$CONTEXT_VARIABLES

MON$CONTEXT_VARIABLES zeigt Infos über benutzerdefinierte Kontextvariablen an.

Spaltenname Datentyp Beschreibung

MON$ATTACHMENT_ID

INTEGER

Verbindungskennung.Gültiger Wert nur für Variablen auf Verbindungsebene.Für Transaktionsebenen ist der Variablenwert NULL.

MON$TRANSACTION_ID

BIGINT

Transaktionskennung.Gültiger Wert nur auf Transaktionsebene.Für Verbindungsebenen ist der Variablenwert NULL.

MON$VARIABLE_NAME

VARCHAR(80)

Name der Kontextvariable

MON$VARIABLE_VALUE

VARCHAR(255)

Wert der Kontextvariable

Abrufen aller Sitzungskontextvariablen für die aktuelle Verbindung
SELECT
  VAR.MON$VARIABLE_NAME,
  VAR.MON$VARIABLE_VALUE
FROM MON$CONTEXT_VARIABLES VAR
WHERE VAR.MON$ATTACHMENT_ID = CURRENT_CONNECTION

MON$DATABASE

MON$DATABASE zeigt Header-Daten der Datenbank an, mit der der aktuelle Benutzer verbunden ist.

Spaltenname Datentyp Beschreibung

MON$DATABASE_NAME

VARCHAR(255)

Name und voller Pfad der primären Datenbankdatei oder der Datenbank-Alias.

MON$PAGE_SIZE

SMALLINT

Datenbank Seitengröße in Bytes.

MON$ODS_MAJOR

SMALLINT

Haupt-ODS-Version, z.B. 11

MON$ODS_MINOR

SMALLINT

Unter-ODS-Version, z.B. 2

MON$OLDEST_TRANSACTION

INTEGER

Nummer der ältesten (relevanten) Transaktion (oldest [interesting] transaction (OIT))

MON$OLDEST_ACTIVE

INTEGER

Nummer der ältesten aktiven Transaktion (oldest active transaction (OAT))

MON$OLDEST_SNAPSHOT

INTEGER

Nummer der Transaktion, die zum Zeitpunkt der OAT aktiv war - älteste Snapshot Transaktion (oldest snapshot transaction (OST))

MON$NEXT_TRANSACTION

INTEGER

Nummer der nächsten Transaktion zum Zeitpunkt als der Monitoring-Snapshot erstellt wurde

MON$PAGE_BUFFERS

INTEGER

Die Anzahl der Seiten, die im Speicher für den Datenbank Seiten-Cache (page cache) zugewiesen wurden

MON$SQL_DIALECT

SMALLINT

SQL-Dialekt der Datenbank: 1 oder 3

MON$SHUTDOWN_MODE

SMALLINT

Der derzeitige Shutdown-Status der Datenbank:

0 - Die Datenbank ist online
1 - Multi-User Shutdown
2 - Single-User Shutdown
3 - Kompletter Shutdown

MON$SWEEP_INTERVAL

INTEGER

Sweep-Intervall

MON$READ_ONLY

SMALLINT

Dieses Kennzeichen gibt an, ob die Datenbank im Modus read-only (Wert 1) oder read-write (Wert 0) arbeitet.

MON$FORCED_WRITES

SMALLINT

Gibt an, ob der Schreibmodus der Datenbank auf synchrones Schreiben (forced writes ON, Wert ist 1) oder asynchrones Schreiben (forced writes OFF, Wert ist 0) gestellt ist

MON$RESERVE_SPACE

SMALLINT

Gibt an, ob reserve_space (Wert 1) oder use_all_space (Wert 0) zum Füllen der Datenbankseiten verwendet wird.

MON$CREATION_DATE

TIMESTAMP WITH TIME ZONE

Datum und Zeit zu der die Datenbank erstellt oder wiederhergestellt wurde.

MON$PAGES

BIGINT

Anzahl der zugewiesenen Seiten der Datenbank auf einem externen Gerät

MON$STAT_ID

INTEGER

Statistik-Kennung

MON$BACKUP_STATE

SMALLINT

Derzeitiger physikalischer Backup-Status (nBackup):

0 - normal
1 - stalled
2 - merge

MON$CRYPT_PAGE

BIGINT

Anzahl verschlüsselter Seiten

MON$OWNER

CHAR(63)

Benutzername des Datenbankbesitzers

MON$SEC_DATABASE

CHAR(7)

Zeigt an, welcher Typ von Sicherheitsdatenbank verwendet wird:

Default - Standard-Sicherheitsdatenbank, d. h. security3.fdb
Self - aktuelle Datenbank wird als Sicherheitsdatenbank verwendet
Other - eine andere Datenbank wird als Sicherheitsdatenbank verwendet (nicht sie selbst oder security4.fdb)

MON$CRYPT_STATE

SMALLINT

Aktueller Stand der Datenbankverschlüsselung

0 - nicht verschlüsselt
1 - verschlüsselt
2 - laufende Entschlüsselung
3 - laufende Verschlüsselung

MON$GUID

CHAR(38)

Datenbank-GUID (persistent bis Wiederherstellung/Fixup)

MON$FILE_ID

VARCHAR(255)

Eindeutige ID der Datenbankdatei auf Dateisystemebene

MON$NEXT_ATTACHMENT

BIGINT

Aktueller Wert der nächsten Verbindungs-ID

MON$NEXT_STATEMENT

BIGINT

Aktueller Wert der nächsten Statement-ID

MON$REPLICA_MODE

SMALLINT

Datenbankreplikatmodus

0 - kein Replikat
1 - nur-lese-Replikat
2 - lese-schreib-Replikat

MON$IO_STATS

MON$IO_STATS zeigt Input/Output-Statistiken an.Die Zähler arbeiten kumulativ, gruppiert für jede Statistikgruppe.

Spaltenname Datentyp Beschreibung

MON$STAT_ID

INTEGER

Statistik-Kennung

MON$STAT_GROUP

SMALLINT

Statistik-Gruppe:

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

MON$PAGE_READS

BIGINT

Anzahl der gelesenen Datenbankseiten

MON$PAGE_WRITES

BIGINT

Anzahl der geschriebenen Datenbankseiten

MON$PAGE_FETCHES

BIGINT

Anzahl der geholten (fetched) Datenbankseiten

MON$PAGE_MARKS

BIGINT

Anzahl der markierten Datenbankseiten

MON$MEMORY_USAGE

MON$MEMORY_USAGE zeigt Statistiken zu Speichernutzung an.

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$MEMORY_USED

BIGINT

Die Größe des genutzten Speichers in Bytes.Diese Daten beziehen sich auf die höchste Speicherzuteilung, die vom Server abgerufen wird.Dies ist nützlich, um Speicherlecks und exzessiven Speicherverbrauch in Verbindungen, Prozeduren, etc. zu ermitteln.

MON$MEMORY_ALLOCATED

BIGINT

Die vom Betriebssystem zugewiesene Speichermenge in Byte.Diese Daten beziehen sich auf die Low-Level-Speicherzuweisung, die vom Firebird-Speichermanager durchgeführt wird - die vom Betriebssystem zugewiesene Speichermenge -, mit der Sie die physische Speichernutzung steuern können.

MON$MAX_MEMORY_USED

BIGINT

Der größte Speicherverbrauch für dieses Objekt in Bytes.

MON$MAX_MEMORY_ALLOCATED

BIGINT

Die größte Speicherreservierung für dieses Objekt durch das Betriebssystem in Bytes.

Note

Zähler, die den Datensätzen auf Datenbankebene MON$DATABASE (MON$STAT_GROUP = 0) zugeordnet sind, zeigen die Speicherzuweisung für alle Verbindungen an.In Classic und SuperClassic zeigen Nullwerte der Zähler an, dass diese Architekturen keinen gemeinsamen Cache haben.

Kleinere Speicherzuweisungen werden hier nicht gesammelt, sondern stattdessen dem Datenbankspeicherpool hinzugefügt.

Erhalten von 10 Anfragen, die den meisten Speicher verbrauchen
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

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

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