AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Ausführungsgeschwindigkeit von einer Stored proc
Thema durchsuchen
Ansicht
Themen-Optionen

Ausführungsgeschwindigkeit von einer Stored proc

Ein Thema von MyRealName · begonnen am 24. Mär 2017 · letzter Beitrag vom 28. Apr 2017
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#1

Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 17:10
Datenbank: Firebird • Version: 2.5 • Zugriff über: UniDAC
Hallo,

ich habe eine Datenbank bei einem Kunden mit Firebird und einem Haufen Daten (DB ist so 3.5 GB gross). Der Kunde sagt, manchmal dauert das Ausführen von einer Stored proc um eine Rechnung zu bearbeiten so 20-25 Minuten. Wenn ich diese DB auf meinen Server (ähnliche Geschwidigkeit) kopiere und dort diese Proc ausführe, dann läuft das in unter 2 sekunden.
Der Unterscheid, den ich sehe ist das ich allein auf meinem Server arbeite, er hat so 40 Nutzer die Remote mit der DB über unsere Anwendung verbunden sind.

Gibt es Ideen, wie man das verbessern kann oder auf was man achten muss, damit es mit den 40 Nutzern schneller läuft ? SuperServer vs. Classic Server etc.

Danke schonmal
Helge
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.289 Beiträge
 
Delphi 12 Athens
 
#2

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 17:23
Hallöle...
Zitat:
ich habe eine Datenbank bei einem Kunden mit Firebird und einem Haufen Daten (DB ist so 3.5 GB gross).
Zitat:
Der Kunde sagt, manchmal dauert das Ausführen von einer Stored proc um eine Rechnung zu bearbeiten so 20-25 Minuten.
...kann das sein das dir das Sweep einen Streich spielt?
Ich habe eine DB mit einem halben GB aber mit haufenweise Inserts üblicherweise 24/365 Laufzeit. Wenn alle Clienten von der DB getrennt sind und der erste sich wieder anmeldet, dann kann es durchaus dauern bis die DB wieder "reagiert".
  Mit Zitat antworten Zitat
jsheyer

Registriert seit: 9. Jun 2005
Ort: Jüchen
79 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 18:28
Hallo,

selbst ein sweep würde das bei der Größe eigentlich erklären, ich habe Datenbank mit 300 GB, hier habe ich das sweep zwar auf 0 gesetzt und startet es zu einer Zeit wo weniger eingeloggt sind.
Hier kann es verschiedene Gründe geben, Transaktionen die die Ausführung blocken, wenn es Remote ist, zu große Rückgabe Mengen an Daten.
Nicht optimierte Queries innerhalb der SP.
Um mal ein paar zu nennen.
forced writes?
Schon mal ins firebird.log nachgesehen ob da war drin steht?
Jörg Heyer
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 18:56
Hallo,

Zitat:
Der Kunde sagt, manchmal dauert das Ausführen von einer Stored proc um eine Rechnung zu bearbeiten so 20-25 Minuten.
Checkliste:
Wann passiert das (Datum/Uhrzeit) -> Abgleich mit eigenen Log und / oder den FB-Logs.
Was genau bedeutet "Bearbeiten"?

eigenes Log =
schreibe relevante Sachen in eine eigene Log-Datei mit Zeitstempel
ohne Bezüge zu realen Daten (Kundenname usw.)

Sweep auf 0 und manuell starten wurde ja bereits gesagt.

(Super)-Classic bei 40 Clients ist vielleicht besser als SuperServer -> Ausprobieren

Dann fällt mir auch noch ein, dem Server eine SSD zu verpassen, zumindestens als Datenplatte.
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 21:35
Der Kunde macht angeblich 1x pro Woche Backup/Restore, das sollte ja ein Sweep mit drin haben.

Bearbeiten heisst, dass Waren-Bewegungen in das Invetar eingetragen werden, verbundene Dokumente aktualisiert (Zum Beispiel die Bestellung wird von der Rechnung darüber informiert, wieviel von der Bestellung wurde schon abgerechnet. Dann cartera (da steht drin für welche Rechnung der Kunde mir noch was schuldet und welche Rechnung er mit welchem Geldeingang bezahlt hat) und Buchhaltung (wo Steuer etc registriert wird).

Wie gesagt, die gleiche DB macht das bei mir in unter 2 Sekunden, was annehmbar ist.

Die Verbindung ist übrigends NO_WAIT, soltle also sofort ein Fehler bei einem Lock conflict bringen und es sollte keine Wartezeit geben
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#6

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 22:05
Hatte vor kurzem mal eine extrem langsame FireBird-Datenbank, kaum ein GB groß.

Habe dann mal geschaut und musste feststellen, dass der Virenscanner auch die Datenbankdatei dauernd überprüfte.
Nachdem ich dem dann beigebracht habe, dass er das Verzeichnis, in dem die Datenbankdatei liegt, doch bitte ungeprüft lassen möge, wurden die Geschwindigkeiten wieder akzeptabel.

Bei Windowsrechner kann es (nach wie vor) zuweilen hilfreich sein, die Festplatten mal zu defragmentieren. Dazu nutze ich MyDefrag, da man es recht umfangreich konfigurieren kann.

Es scheint hilfreich zu sein, wenn die Datenbankdatei "am Stück" vorliegt. Ist sie zu stark fragmentiert, scheint das doch die Zugriffszeiten der Festplatten zu erhöhen.

Ob aber in einem so extemen Maße, wie im Eingangspost beschrieben, wage ich zu bezweifeln.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 22:09
Hallo,

Ein Lock conflict würde sofort zum Abbruch, und nicht zur Verlangsamung führen.

Zitat:
Der Kunde macht angeblich 1x pro Woche Backup/Restore, das sollte ja ein Sweep mit drin haben.
Die ist schon bewusst, dass der Sweep alle 10.000 (?) Transaktionen trotz Backup/Restore durchgeführt wirdm, von dem Client, der "gerade dran ist", also die 10.0000 Transaktion erwischt hat.
Dass läßt sich nur ändern, wenn der (wie oben beschrieben) Sweep-Intervall auf 0 gesetzt wird.

Es kann sein, dass es daran liegt, OK, ausprobieren,
ich glaube es eher nicht (Wahrscheinlichkeit 1/10.000).

SSD ist auf jeden Fall nicht verkehrt.
Heiko
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 24. Mär 2017, 22:11
Hallo,
Zitat:
Es scheint hilfreich zu sein, wenn die Datenbankdatei "am Stück" vorliegt. Ist sie zu stark fragmentiert, scheint das doch die Zugriffszeiten der Festplatten zu erhöhen.
Die DB ist intern immer fragmentiert, hier hilft nur ein Backup/Restore.

Aber ein Virenscanner, der ständig die Zugriffe auf die DB-Datei "kontrolliert", ist doof
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 25. Mär 2017, 08:10
Der Kunde sagt, manchmal dauert das Ausführen von einer Stored proc um eine Rechnung zu bearbeiten so 20-25 Minuten. Wenn ich diese DB auf meinen Server (ähnliche Geschwidigkeit) kopiere und dort diese Proc ausführe, dann läuft das in unter 2 sekunden.
Da ist irgendetwas nicht "as designed". Macht er gleichzeitig einen Videoschnitt auf dem Server?
Abgesehen von solchen unwahrscheinlichen(?) Umständen, könnte es sein, daß die Daten morsch sind? 20 Minuten spricht doch eher für konstrukte ala
SQL-Code:
select *
from tabl11,table2,table3..
where substr(fielda||fieldb,67,3)>'abc'
Falls da mal nicht das Erwartete in den Daten auftaucht könnte es dauern.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von MyRealName
MyRealName

Registriert seit: 19. Okt 2003
Ort: Heilbronn
673 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Ausführungsgeschwindigkeit von einer Stored proc

  Alt 25. Mär 2017, 13:05
Der Kunde sagt, manchmal dauert das Ausführen von einer Stored proc um eine Rechnung zu bearbeiten so 20-25 Minuten. Wenn ich diese DB auf meinen Server (ähnliche Geschwidigkeit) kopiere und dort diese Proc ausführe, dann läuft das in unter 2 sekunden.
Da ist irgendetwas nicht "as designed". Macht er gleichzeitig einen Videoschnitt auf dem Server?
Abgesehen von solchen unwahrscheinlichen(?) Umständen, könnte es sein, daß die Daten morsch sind? 20 Minuten spricht doch eher für konstrukte ala
SQL-Code:
select *
from tabl11,table2,table3..
where substr(fielda||fieldb,67,3)>'abc'
Falls da mal nicht das Erwartete in den Daten auftaucht könnte es dauern.

Gruß
K-H
Dann würde es doch aber auch auf meinem Server solange dauern, tut es aber nicht
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 11:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz