AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Firebird optimal einstellen

Firebird optimal einstellen

Ein Thema von csaeum · begonnen am 6. Okt 2014 · letzter Beitrag vom 11. Okt 2014
Antwort Antwort
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.879 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Firebird optimal einstellen

  Alt 7. Okt 2014, 21:20
Zwischen der nächsten gestarteten und der ältesten Transaktion liegen 6000 Transaktionen. Da ist wirklich etwas faul. Bei einem Vorgang sollten keine 6000 Tranaktionen gestartet werden. Zudem sieht es aus, als ob diese nicht abgeschlossen werden. Viele offene Transkationen sind Gift für Firebird. Man solte sich die Abfragen mal ansehen.
Markus Kinzler
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 07:29
Wo soll ich da jetzt am Besten anfangen, was man normal über private Kanäle versucht zu erklären ...

Grundsätzlich bin ich der Meinung, dass man heutzutage viel zu schnell mal in Richtung SSD geht, was in der Regel dann das echte Problem halt verschleiert. Man kann mit rotierenten Platten locker Umgebungen mit > 100 Benutzer bedienen, vorausgesetzt:
  • Grundlegende Firebird-Settings sind berücksichtigt
  • Das (physische) Datenmodell passt
  • Der/die Entwickler haben schon mal was von Transaktionssteuerung in der Client-Anwendung gehört
  • SQLs sind optimiert (SQL Performance)
  • Verarbeitung am Client vs. am Server mit Stored Procedures/Trigger
  • Etwas Server-Hardware

Server-Hardware ist meistens da. Da läßt man sich nicht lumpen, ist ja Ehrensache.

Aus meiner Erfahrung haperts immer, na vielleicht zu 90%, an den anderen Sachen. Ein Steckenpferd ist SQL Performance. Es gibt nicht grundlos Bücher die sich rein mit diesem Thema beschäftigen. Firebird ist hier keine Ausnahme. Warum auch. Ich hab schon Umgebungen gesehen, die mit < 10 Usern eine potente Umgebung in die Knie bekommen haben.

Zurück zum Problem des Thread-Erstellers: Da er 2.5 einsetzt, hat er bzgl. dem Monitoring jegliche Möglichkeiten, ohne dabei den Softwarehersteller zu brauchen, da das schön transparent mit den Monitoring-Tabellen und der Trace API möglich ist. Es gibt auch Tools dafür, die hier einem den Einstieg enorm erleichtern. Ich mach jetzt keine Werbung ...

Mit diesen Mitteln hat man sehr, sehr oft in 15 Minuten die Top-Hitters auf SQL Ebene identifiziert, sofern man in diesem Zeitraum eine repräsentative Last erzeugen kann. Die langlaufende Transaktion (OAT) sollte in MON$TRANSACTIONS auftauchen. Oft ist das "Problem" mit der OAT einfach die Verwendung von AutoCommit in der Client-Anwendung, die in der Regel im Hintergrund mit einem COMMIT RETAINING abgeschlossen wird, was die Transaktion physisch so richtig nicht beendet. Wo wir wieder beim Thema "Transaktionsteuerung" wären.

Auf der Settings-Ebene gibts dann halt noch Themen wie: Erhöhung von PageBuffers, In-Memory Sort Space, HashSlots (vor allem wichtig für Classic/SuperClassic) etc. Bei allen diesen Themen darf man nicht vergessen, dass auch noch der OS Filesystem Cache da ist ...

Ach ja, eine Transaktion-ID Differenz von 6000 ist Kindergarten. Das merkt man an der Performance rein gar nicht. Spannend wirds im 6 oder 7-stelligen Bereich
  Mit Zitat antworten Zitat
csaeum

Registriert seit: 6. Okt 2014
6 Beiträge
 
#3

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 08:14
Danke tsteinmaurer

du sprichst mir aus der Seele, ich bin ja im IT Bereich nicht unerfahren aber mit Firebird steck ich in den Kinderschuhen.

Das man mit SSD erstmal verschleiert unterschreibe ich dir.

Wie würdet ihr nun vorgehen. Die Tools sagen mir erstmal alle nichts und auch nicht wie man diese handhabt. Wie sollte man die Caches einstellen usw damit man erstmal mit den Teil wirklich weiterarbeien kann. Da es eine ERP ist und wir derzeit 2 Artikel mit jeweils 2078 Kinderartikeln haben sollten die erstmal in den Shop hochgeladen werden. Dazu hat er zuletzt in 24h es nicht geschafft.

Wir sind hier am Anfang und wenn wir es so durchziehen muss er später auch mal 100 Artikel mit jeweils 2078 Kinder hochladen können. Ich denke hier müssen die Caches noch besser werden damit er schneller wird. Beim erstellen dieser konnte ich ja auch schonmal was rausholen wie im 1. Post.

Was sollte man erstmal nehmen Super - Classic oder SuperClassic?

Was empfiehlt ihr? Weil dann kann ich die Caches mal optimieren. Falls ihr hier eine empfehlung habt wäre ich auch dankbar.

Gruß und Danke schonmal an allen hier in der Runde

chris
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.490 Beiträge
 
Delphi 12 Athens
 
#4

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 10:35
Die Ursache der Geschwindigkeitsprobleme scheinen mir eher auf Seite der Anwendung zu liegen. Das kann verschiedenste Ursachen haben. Von der Struktur in der die Daten erfasst sind (z.B. in welche Kategorie bestimmte Artikel gehören, Einstellungen wie diese bei der Kalkulation zu berücksichtigen sind, usw.) bis zu Schwächen beim Entwurf der Datenbankstruktur. Letzlich kann nur der Hersteller der Software den Support liefern. Wenn schon jetzt in der Einführungsphase kein ausreichender Support geliefert werden kann, wie soll das erst bei Störungen im laufenden Betrieb funktionieren? ERP-Systeme gibt es reichlich am Markt, da sollte man sich die Frage stellen, ob man die richtige Entscheidung getroffen hat und welche Alternativen zu diesem Zeitpunkt noch bleiben.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#5

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 11:12
@csaeum: Ich kenn das ERP nicht, noch was eine "Variante" in diesem ERP ist. Solange man das Problem nicht eingrenzen bzw. genauer beschreiben kann, werden wir hier in einem öffentlichen Forum keine Chance haben dir zu helfen. Wie ich vorher schon geschrieben habe liegt es meistens an der Anwendung, einem schlechten physischen Datenmodell (fehlende Indizes ...) etc.

Aus meiner Sicht kannst du ohne der Unterstützung des Herstellers folgendes machen:
  • Benchmarking deiner Storage, ob vielleicht was mit dem RAID (Controller) ist.
  • Sofern du Firebird 64-bit verwendest, bei SuperClassic bleiben. Wenn Firebird 32-bit (z.b. durch Limitierung einer Third-Party UDF Library), dann Classic.
  • Page Buffers auf Datenbankebene auf 2048 setzen. Geht mit dem gfix tool.
  • LockMemSize und LockHashSlots in firebird.conf um einen Faktor 10 erhöhen. LockHashSlots sollte eine Primzahl sein, d.h. entsprechend geringfügig auf/abrunden. TempCacheLimit in firebird.conf auskommentieren, damit die ca. 64MB greifen. => Danach ist ein Restart des Firebird Dienstes notwendig.
  • FB TraceManager runterladen (http://www.upscene.com/fb_tracemanager/) und via Monitoring Tables und der Trace API schaun, welche Statements wieviel brauchen. Mit der Trace API bekommt man dann auch ev. ein Gefühl wie so der Ablauf im ERP für einen "Geschäftsprozess" Firebird-seitig ist

Sofern die ersten 4 Punkte nicht den erwarteten Erfolg bringen, dann läufts im Prinzip darauf raus, dass man mit dem Monitoring dem Hersteller die Hotspots/Probleme aufzeigt. Spreche hier aus Erfahrung ...

Ich hoffe, dass dir das jetzt konkret genug war.
  Mit Zitat antworten Zitat
csaeum

Registriert seit: 6. Okt 2014
6 Beiträge
 
#6

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 20:14
Danke tsteinmaurer

das ist mehr wie ich gedacht habe:
Ich habe nun die DefaultDbCachePages = 2048 gesetzt.
Nun muss ich noch die Buffers auf 2048 setzen. Kann ich das im laufenden Betrieb machen?

Code:
gfix.exe -buffers 2048 DB
Werde mal berichten wie es läuft.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#7

AW: Firebird optimal einstellen

  Alt 8. Okt 2014, 22:05
DefaultDbCachePages = 2048 in firebird.conf wird nur dann verwendet, wenn auf Datenbankebene Page Buffers = 0 ist. Wenn du aber den Wert auf Datenbankebene mit gfix setzt, dann kommt der Default in firebird.conf nicht zum Zuge. Aber da du beide Werte gleich setzt ist es egal.

Ja, du kannst den Page Buffers mit gfix während des Betriebs setzen, aber diese Änderung wird erst für neue Connections wirksam, d.h. bestehende Connections bleiben davon unbetroffen.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz