Datenbank-Header
Diese Option erzeugt die geringste Ausgabemenge — es sei denn, Sie geben einen einzelnen nicht vorhandenen Tabellennamen mit dem Schalter -t[able]
an — und ist in allen anderen Schaltern enthalten, sodass dies zuerst erläutert wird.
tux> gstat employee -header Database "/opt/firebird/examples/empbuild/employee.fdb" Database header page information: Flags 0 Checksum 12345 Generation 184 Page size 4096 ODS version 11.1 Oldest transaction 166 Oldest active 167 Oldest snapshot 167 Next transaction 170 Bumped transaction 1 Sequence number 0 Next attachment ID 68 Implementation ID 19 Shadow count 0 Page buffers 0 Next header page 0 Database dialect 3 Creation date Sep 25, 2009 12:50:24 Attributes multi-user maintenance Variable header data: Sweep interval: 20000 *END*
In der ersten Ausgabezeile werden die Dateinamen und der Pfad der Datenbank angezeigt.Dies kann nützlich sein, um einen Datenbankalias aufzulösen und herauszufinden, wo sich die Datenbank befindet.Da es sich bei der Mitarbeiterdatenbank um eine Einzeldateidatenbank handelt, wird nur eine Datei angezeigt.Wäre dies eine Datenbank mit mehreren Dateien gewesen, würde das Ende der obigen Auflistung wie folgt aussehen:
... Variable header data: Continuation file: /u00/firebird/databases/multi_employee.fdb1 Last logical page: 162
Die Details der verschiedenen Headerfelder werden unten beschrieben:
- Flags
-
Flags werden auf einer Datenbank-Headerseite nicht verwendet.
- Checksum
-
Alle Prüfsummen sind 12345.Prüfsummen auf den verschiedenen Datenbankseiten werden nicht mehr verwendet.
- Generation
-
Die Generierungsnummer wird jedes Mal erhöht, wenn diese Seite in die Datenbank neu geschrieben wird.
- Page size
-
Die Seitengröße der gesamten Datenbank.Da die Datenbankdatei in verschiedene Seiten aufgeteilt werden muss, kann der SYSDBA bei der Erstellung angeben, wie groß die gewünschte Seitengröße sein soll.Jede Seite in der Datenbank hat dieselbe Größe.
- ODS version
-
Die On-Disc-Struktur einer Datenbank definiert möglicherweise zusammen mit dem SQL-Dialekt, welche Funktionen des Firebird-Datenbanksystems Benutzern dieser Datenbank zur Verfügung stehen.Diese Funktionen sind möglicherweise in der von Ihnen ausgeführten Version von Firebird vorhanden. Wenn das Datenbank-ODS jedoch älter ist, sind einige der neuen Funktionen nicht verfügbar.
Werte, die Sie derzeit hier sehen können, sind:
-
5.0 für Interbase 3.3
-
8.0 für Interbase 4.0
-
9.0 für Interbase 4.5
-
9.1 für Interbase 5.0
-
10.0 für Firebird 1.0 und Interbase 6.0
-
10.1 für Firebird 1.5
-
11.0 für Firebird 2.0
-
11.1 für Firebird 2.1
-
11.2 für Firebird 2.5
-
- Transaction details
-
Der Bericht enthält eine Reihe verschiedener Transaktionsdetails. diese sind:
- Oldest transaction
-
Die Transaktions-ID der sogenannten Oldest Interesting Transaction oder OIT.Dies ist einfach die ID der am längsten laufenden Transaktion, die bisher nicht über ein hartes Commit abgeschlossen wurde.Es wurde möglicherweise zurückgesetzt (Rollback) oder befindet sich in der Schwebe (Limbo), aber wenn es per Commit festgeschrieben wurde, ist es nicht mehr interessant.Dieser Wert wird zusammen mit der ältesten Snapshot-Transaktion verwendet, um festzustellen, ob ein automatischer Sweep der Datenbank erforderlich ist.
NoteEs gibt zwei Commits — Commit und Commit-Retaining (Beibehaltung).Nur das erste davon ist ein harter Commit, das bei Ausführung die Transaktion als nicht mehr interessant macht.Durch die Beibehaltung des Commits bleibt die Transaktion weiterhin interessant.Einige Datenbankdienstprogramme und/oder -tools, die ein Commit durchführen, führen tatsächlich ein Commit-Retaining durch, wodurch Ihre Datenbank mit vielen noch interessanten Transaktionen belassen werden kann.
- Oldest active
-
Die ID der ältesten aktiven Transaktion oder OAT.Dieser Wert zeigt die Transaktions-ID (TID) der ältesten noch laufenden Transaktion an.Eine Transaktion gilt als aktiv, wenn sie nicht durch einen harten Comit festgeschrieben wurde, sich nicht in einem Schwebezustand befindet und nicht zurückgesetzt wurde.
- Oldest snapshot
-
Die ID der ältesten Transaktion, die derzeit nicht zur Müllabfuhr (Garbage Collection) berechtigt ist.Bei Transaktionen mit dieser oder einer höheren ID können beispielsweise noch keine alten Datensatzversionen durch einen Sweep entfernt werden.Normalerweise entspricht dies dem obigen OAT.Die Differenz zwischen diesem Wert und der OIT, wenn sie größer als das Datenbank-Sweep-Intervall ist — vorausgesetzt, das automatische Sweeping ist nicht deaktiviert — bestimmt, ob ein automatischer Sweep stattfindet.
NoteViele Websites, Bücher und Handbücher (zuvor einschließlich dieses) erklären, dass der automatische Sweep aktiviert wird, wenn OAT - OIT größer als das Sweep-Intervall ist.Vlad Khorsun, einer der Firebird-Entwickler, erklärte, dies ist nicht der Fall, wenn der Sweep aktiviert wird, wenn OST — OIT größer ist als der Schwellenwert.
Das heißt:Der automatische Sweep wird gestartet, wenn die Differenz zwischen OST (Oldest Snapshot Transaction) und OIT größer als das definierte Sweep-Intervall ist. Der Prozess des Benutzers, der versucht hat, die Transaktion zu starten, die das Sweep-Intervall um eins überschreitet, durchsucht die gesamte Datenbank, bevor die angeforderte Transaktion tatsächlich gestartet wird.
- Next transaction
-
Die nächste in der Datenbank gestartete Transaktion hat diese ID-Nummer.
- Bumped transaction
-
Immer 1, nicht mehr verwendet.
Wenn Sie feststellen, dass der Unterschied zwischen der OAT und der ID der nächsten Transaktion immer größer zu werden scheint, wird etwas in Ihrer Datenbank nicht ordnungsgemäß festgeschrieben, sodass sich möglicherweise eine zunehmende Anzahl von Speicherbereinigungen aufbaut.Schließlich werden Sie feststellen, dass die Datenbankstartzeiten immer länger dauern und die Leistung immer langsamer wird.Überprüfen Sie die Zahlen, und wenn ein Problem festgestellt wird, sollten Sie
gfix
ausführen, um manuell einen Datenbank-Sweep auszuführen, um den Müll zu beseitigen und die normale Arbeit in der Datenbank wiederherzustellen.Weitere Informationen zum Erkennen und Behandeln von Transaktionen in der Schwebe finden Sie im Abschnitt Limbo Transaction Management im Handbuch
gfix
.Dies kann sich durchaus auf die Fähigkeit des Datenbank-Sweep-Prozesses auswirken, alte redundante Daten aus älteren uninteressanten Transaktionen zu entfernen.Limbo-Transaktionen werden verursacht, wenn ein zweiphasiges Commit über mehrere Datenbanken aus irgendeinem Grund fehlschlägt.Limbo-Transaktionen sind für die Datenbank immer noch interessant und müssen mitgfix
festgeschrieben oder zurückgesetzt werden, da die Sweep-Verarbeitung nicht erkennen kann, ob dies ohne menschliches Eingreifen sicher ist oder nicht. - Sequence number
-
Immer Null.Dies war die Sequenznummer der Datenbank-Headerseite, wird jedoch nicht mehr verwendet.
- Next attachment ID
-
Die ID-Nummer des nächsten Anhangs zu dieser Datenbank.Jedes Mal, wenn eine Anwendung eine Verbindung zur Datenbank herstellt, steigt diese Zahl um eins.Durch das Starten und Herunterfahren der Datenbank wird auch diese Anzahl erhöht.
gstat
-Verbindungen ändern die ID nicht, da sie sich nicht auf normale Weise verbinden. - Implementation ID
-
Wenn die Datenbank erstellt wurde, wurde sie möglicherweise auf einem anderen System erstellt — Hardware, Betriebssystem usw. — als dem, auf dem sie jetzt ausgeführt wird.Die Implementierungs-ID zeigt Ihnen, auf welcher Hardwarearchitektur die Datenbank ursprünglich erstellt wurde.
Die Implementierungs-ID wird verwendet, um zu bestimmen, ob die Datenbank tatsächlich auf der Hardware verwendet werden kann, auf der sie gerade ausgeführt wird, oder ob es eine Funktion der ursprünglichen Hardware gibt, auf der die Datenbank erstellt wurde, die sie mit dem aktuellen Hostsystem inkompatibel macht.
- Shadow count
-
Zeigt die Anzahl der an diese Datenbank angehängten oder für diese Datenbank verfügbaren Schattendateien an.Manchmal ist dieser Wert falsch, selbst wenn kürzlich Schattendateien erstellt und/oder gelöscht wurden.
WarningAufgrund der Inkonsistenz zwischen den Berichten von
gstat
und der Realität ist es am besten,isql
und den BefehlSHOW DATABASE
zu verwenden, um die korrekten Details der Schattendateien anzuzeigen. - Page buffers
-
Wenn dieser Wert als Null angezeigt wird, verwendet die Datenbank den Standardwert des Servers für die Anzahl der Seiten, die während des Betriebs der Datenbank im Speicher zwischengespeichert werden können.Die Einstellung kann in der Datei
firebird.conf
definiert werden.Unter Firebird Superserver 2.1 ist diese EinstellungDefaultDbCachePages
in der Konfigurationsdatei und auf 2048 Seiten festgelegt.Sie könnengfix
verwenden, um dies zu ändern, ohne die Konfigurationsdatei zu bearbeiten. - Database dialect
-
Die SQL-Dialektnummer der Datenbank.Normalerweise 1 oder 3.Diese Einstellung kann mit
gfix
geändert werden und hilft neben dem ODS-Wert zu bestimmen, welche Funktionen von Firebird verfügbar sind, wenn Anwendungen die Datenbank verwenden. - Creation date
-
Das Datum, an dem diese Datenbank ursprünglich erstellt wurde.Es kann das Datum anzeigen, an dem die Datenbank zuletzt von
gbak
wiederhergestellt wurde. - Attributes
-
In diesem Teil des Berichts werden Informationen zu verschiedenen Attributen der Datenbank angezeigt.Beispiele für das, was Sie möglicherweise sehen, sind:
- no reserve
-
Alle Seiten werden zu 100% gefüllt und sind in schreibgeschützten Datenbanken am nützlichsten.Auf jeder Seite ist kein Platz für Aktualisierungen und / oder Löschungen reserviert.
- force write
-
Schreibvorgänge auf Festplatten werden nicht zwischengespeichert.Sie werden zum Zeitpunkt der Schreibanforderung auf die Hardware geschrieben.Dies wird hauptsächlich in Windows-Datenbanken verwendet, in denen das Cache-Verwaltungssystem zu Schreibverlust und Datenbankbeschädigung führen kann.
- shutdown
-
Die Datenbank wurde geschlossen und kann nicht verwendet werden.
- read only
-
Die Datenbank wird im schreibgeschützten Modus ausgeführt.
- multi-user maintenance
-
Die Datenbank ist wegen Wartungsarbeiten geschlossen.Mehrere Verbindungen sind nur von SYSDBA oder dem Datenbankeigentümer zulässig.
- single-user maintenance
-
Die Datenbank ist wegen Wartungsarbeiten geschlossen. Es ist nur eine SYSDBA- oder Datenbankeigentümerverbindung zulässig.
Abhängig von der verwendeten Version von Firebird und natürlich zukünftigen Versionen können hier andere Werte angezeigt werden.
- Variable header data
-
Dieser Teil des Berichts behandelt Informationen, die sich nicht im festen Teil des Datenbankheaders befinden.Beispielsweise wird hier das Sweep-Intervall angezeigt und es werden Informationen zu etwaigen angehängten Sekundärdateien angezeigt.Wenn Sie die Datenbank beispielsweise mit dem Tool
nbackup
gesichert haben, werden hier Details der Sicherungs-GUID angezeigt — jedoch nur für die letzte Sicherung.