Firebird Performance, Pages und Buffer Size

Firebird Performance, Pages und Buffer Size

Produktlinie

Standard

|

Expert

Betriebsart

CLOUD ABO

|

ON-PREMISES

Module

Leistung & CRM

Budget & Teilprojekt

Fremdkosten

Ressourcenplanung

Business Intelligence

Erstellt: 05.03.2021
Aktualisiert: 12.04.2023 | Informationen zu CPU erweitert und Artikel umgestaltet.

Firebird ist der mit Vertec standardmässig mitgelieferte Datenbankserver und wird auch im Vertec Cloud Abo eingesetzt.

Die Firebird Performance hängt von folgenden Parametern der eingesetzten Hardware ab:

  • CPU
  • Disk Performance
  • Memory
CPU

Das Teilen von CPU Cores ist insbesondere bei Cloud Servern (aber auch bei On-Premises virtualisierten Servern) ein Problem. Dies sollte vermieden werden. Ein Datenbankserver sollte jede Anfrage bearbeiten können, da jede Verzögerung wiederum direkt wahrgenommen werden kann. Somit sollten mindestens 4 Cores für einen Firebird Server verwendet werden, ohne dass diese noch mit anderen VM’s geteilt werden. Zudem sollte die VM mit fix zugewiesenen Ressourcen (dedicated) arbeiten. Weitere Informationen dazu finden Sie im Artikel Performance im Netz .

Disk Performance

Insbesondere angemietete Cloud Server haben in der Regel eine schlechte bis sehr schlechte Disk Performance, was sich direkt auf die Vertec Performance auswirkt. Der Grund ist, dass die Disk an sich schnell ist, aber nicht direkt mit der eingesetzten Hardware, sondern z.B. über IP angebunden ist (wie bei einem netzgebundenen Speicher (NAS)).

Memory

Die Disk Performance ist ein komplexes Thema, da es schwierig ist, diese bei Cloud Servern zu verbessern. Da viele Operationen in Vertec jedoch reine Leseprozesse sind, wie bspw. das Aufstarten, lässt sich die Disk Performance verbessern, indem dem Firebird Server erlaubt wird, mehr Informationen im Memory zu halten. Die Information wird dadurch nicht bei jedem Lesezugriff erneut von der Disk, sondern direkt aus dem Memory gelesen.

Pages

Firebird speichert seine Daten in den Vertec Datenbanken (z.B. Vertec.fdb) persistent ab. Diese Daten werden in sogenannten Pages gespeichert. Sie haben bei Vertec eine Grösse von 16KB und werden als Ganzes von Firebird ins Memory übernommen. Wenn kein Platz für neue Pages vorhanden ist, entfernt Firebird die am wenigsten genutzten Pages. Die maximale Anzahl an Pages, die im Memory gespeichert werden dürfen, wird durch die Buffer Size (siehe weiter unten) festgelegt.

Memory erhöhen

Die Performance der Firebird Datenbank lässt sich verbessern, wenn dem Datenbankserver mehr Memory für seine Datenbank zur Verfügung gestellt wird. Die totale Anzahl der Pages in einer Datenbank kann einfach berechnet werden: die Grösse der Vertec.fdb Datei dividiert durch 16'384 (der Page Size). Bei kleineren Datenbanken sollte man nicht weniger als z.B. 10‘000 Pages im Buffer erlauben (Vertec Default), bei grösseren Datenbanken lohnt es sich, genauer hinzuschauen. Dass alle möglichen Datenbank Pages im Memory gehalten werden, ist wohl bei den meisten Vertec Installationen nicht nötig, es sei denn die Disk Performance ist schlecht und genügend Memory auf dem Server vorhanden.

Hinweis: Firebird reserviert beim Betriebssystem den ganzen Speicher, der sich aus der Buffer Size ergibt. Im Standard, bei einer Buffer Size von 10'000, sind das somit rund 160MB. Dies wird z.B. im Task Manager als Commited Size angegeben – das OS hat Firebird diesen Speicher fix zugesichert. Allerdings richtet sich der effektive Speicherbedarf danach, was Firebird wirklich nutzt, was z.B. durch die Kennzahl Memory (private working set) ersichtlich ist. Stellt die Überwachung bezüglich Memoryauslastung der Server allerdings auf der Commited Size ab, so wird der Speicher allerdings als tatsächlich «in Benutzung» angeschaut.

Buffer Size erhöhen

Um die Buffer Size zu erhöhen kann via gfix folgender Befehl ausgeführt werden:

-b 200000 -user SYSDBA -password <password> vertec.fdb

Diese Einstellung wird jedoch beim DB Konvert auf die nächste Major Version wieder durch den Default von 10'000 ersetzt.

Ab Vertec 6.5 kann in der Database Section des Vertec.ini - File die Standard Buffer Size Grösse überschrieben werden:

Hier im Beispiel wird eine Buffer Size Grösse von 200'000 gesetzt, was einem maximalen Memorybedarf des Firebird Servers von ca. 3.2GB entspricht.

Wichtig ist hierbei zu wissen, dass es sich nicht um einen Maximalwert handelt, sondern dass Firebird Server im Memory immer die gesamte Anzahl reserviert. Der Server muss dementsprechend über ausreichend Arbeitsspeicher verfügen, um eine hier angegebene Buffer Size auch bewältigen zu können.

Steht dieser Parameter im Vertec.ini File, wird die Datenbank beim Konvert auf diesen Wert gehoben.

Bitte wählen Sie Ihren Standort