AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi mySQL Funktion Performance
Thema durchsuchen
Ansicht
Themen-Optionen

mySQL Funktion Performance

Ein Thema von EarlyBird · begonnen am 25. Jul 2015 · letzter Beitrag vom 27. Jul 2015
Antwort Antwort
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#1

AW: mySQL Funktion Performance

  Alt 26. Jul 2015, 20:52
1. habe ich das Schema auf dem Produktivsystem aus dem Backupschema des Entwicklungssystem erstellt
2. habe ich ein Tool von Devart dafür genutzt
3. Habe ich es selbst überprüft
ok
Ich habe die Group/Agg Abfrage in eine eigene Funktion ausgelagert.
Diese Funktion nutze ich in der View.
Das ist vielleicht problematisch, aber wenn es auf x schnell ist und auf y langsam, ist es wohl nicht das Kernproblem.
Allerdings, wenn bei so wenig Datensätzen schon so lange Laufzeiten entstehen, ist die Umsetzung dieser Funktion oder die Integration in den View vielleicht auch nicht sehr gelungen.
Die Variablen habe ich auch schon verglichen.
da gibt es schon so einige Unterschiede.
Ich weiß nur nicht welche die Performance so stark beeinflussen können.
Es sind auch insgesamt so viele das ich nicht einfach alles probieren kann.
Tja, ich werds erst recht nicht nicht durchprobieren.
Vielleicht orientierst Du Dich an der Idee, dass es am verfügbaren Speicher für Sort und Group Anweisungen liegt, also Memory Settings (xy_buffer_size). Das dürfte eine überschaubare Anzahl von Einstellungen sein, vielleicht sogar einige identisch.
Dann gibt's da noch die Dokumentation, die liefert sicher Hinweise ohne Durchprobieren.
Gruß, Jo

Geändert von jobo (26. Jul 2015 um 21:03 Uhr)
  Mit Zitat antworten Zitat
EarlyBird

Registriert seit: 29. Mär 2007
235 Beiträge
 
#2

AW: mySQL Funktion Performance

  Alt 27. Jul 2015, 11:54
Ich habe die Group/Agg Abfrage in eine eigene Funktion ausgelagert.
Diese Funktion nutze ich in der View.
Das ist vielleicht problematisch, aber wenn es auf x schnell ist und auf y langsam, ist es wohl nicht das Kernproblem.
Allerdings, wenn bei so wenig Datensätzen schon so lange Laufzeiten entstehen, ist die Umsetzung dieser Funktion oder die Integration in den View vielleicht auch nicht sehr gelungen.
in der Funktion steht nur eine Einfache Select mit der Group Anweisung es wird ein Parameter übergeben.
Wenn ich das ganze direkt in der View einbinde ist das Problem auch identisch.

SQL-Code:
Select ..., ..., (select sum(wert) from TableB where TableA_ID = a.ID Group by TableA_ID) as wertgesamt from TableA as a
ist identisch mit
Select ..., ..., datenbankname.Funktion(ID) as wertgesamt from TableA
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

AW: mySQL Funktion Performance

  Alt 27. Jul 2015, 13:45
Inno-DB oder MYISAM? In der MySQL-Workbench kann man sich ganz gut die Füllstände der Buffer und die Last-Verteilung anschauen.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: mySQL Funktion Performance

  Alt 27. Jul 2015, 14:38
SQL-Code:
Select ..., ..., (select sum(wert) from TableB where TableA_ID = a.ID Group by TableA_ID) as wertgesamt from TableA as a
ist identisch mit
Select ..., ..., datenbankname.Funktion(ID) as wertgesamt from TableA
"Group by TableA_ID" ist meist falsch bzw. unter MySQL nur überflüssig (weil es erlaubt ist) und verleitet das System ggf dazu, die TableB 100e Mal abzufragen, entsprechend der Anzahl der Mastersätze.
In der Funktion, ist es vielleicht auch so formuliert, hier zwingt der Funktionsaufruf das System zu einem ähnlichen Verhalten.
Formulier die Abfrage um.
Code:
Select a.*, sum(b.wert) from tableA a, tableB
 where b.tableA_ID=a.id
 Group by a.*
wobei alle a.* durch einzelne Feldnamen zu ersetzen sind (im select und im groub by).
Alternativ natürlich das Statement auch in ANSI Syntax (..from a join b on ..).
So kommst Du vermutlich mit jeweils einem Scan je Table davon und bist per se schneller.
Gruß, Jo
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:35 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