AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

ADO langsam :-(

Ein Thema von haentschman · begonnen am 18. Mär 2017 · letzter Beitrag vom 21. Mär 2017
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von mikhal
mikhal

Registriert seit: 11. Sep 2003
Ort: Linz am Rhein
796 Beiträge
 
Delphi 11 Alexandria
 
#11

AW: ADO langsam :-(

  Alt 19. Mär 2017, 12:25
FireDAc von Embarcadero oder UniDAC von Devart.

Wobei FireDAC bei der Professional- Version von Delphi / RAD Studio nur mit Addin MS SQL Server kann oder mit der Enterprise-Version von Delphi / RAD Studio.

Grüße
Mikhal
Michael Kraemer
Computer erleichtern die Arbeit...
...und die Erde ist eine Scheibe!

Geändert von mikhal (19. Mär 2017 um 12:27 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#12

AW: ADO langsam :-(

  Alt 19. Mär 2017, 13:03
Und wenn du keine DB-Sensitiven Controls an TDatasets hängst kannst du auch den nativen ADO-Interfaces (Also ohne dbGO-Schnittstelle von Emba) dich dran hängen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: ADO langsam :-(

  Alt 19. Mär 2017, 17:41
Zitat:
UniDAC von Devart.
[Meine Meinung]
...die beste Investion ever.
[/Meine Meinung]
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#14

AW: ADO langsam :-(

  Alt 19. Mär 2017, 19:39
Zitat:
UniDAC von Devart.
[Meine Meinung]
...die beste Investion ever.
[/Meine Meinung]
Sind voll ihr Geld Wert (ebenfalls meine Meinung).
Haben Sie Jahrelang für MySQL im Einsatz (DAC for MySQL) und haben jetzt im Rahmen einer Vereinheitlichung auch den Oracle-Zugriff darüber laufen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: ADO langsam :-(

  Alt 20. Mär 2017, 13:50
Hallöle...

Hier ist das Problem nochmal beschrieben:
https://edn.embarcadero.com/article/27790
Zitat:
I noticed, while accessing some 25,000 rows of SQL Server data in a TADOQuery, that simply looping through the rows of the TADOQuery took 75 seconds, while performing NO work of any type within the loop.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#16

AW: ADO langsam :-(

  Alt 20. Mär 2017, 13:58
Wenn ich das richtig sehe betrifft dieses Problem auch die Firedac TFDQuery ?

Ciao
Stefan
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#17

AW: ADO langsam :-(

  Alt 20. Mär 2017, 14:48
Wenn ich jetzt nicht alles völlig falsch verstanden habe, dann muss ich aber die ADO-Komponeten auch mal ein bisschen in Schutz nehmen - von Haus aus verhalten die sich nicht so, wie du es beschreibst. Du schreibst ja, dass du die Objekte aus irgendeiner Abstraktionsschicht zur Verfügung gestellt bekommst, auf die du selbst keinen Einfluss hast. Wahrscheinlich werden dort irgendwelche fiesen Sachen gemacht.

Ich benutze TADOConnection und TADOQuery seit vielen Jahren für Zugrife auf den MS SQL Server und importiere damit zehntausende Datensätze in wenigen Sekunden. Die hier genannte Option musste ich noch nie ändern (ich hatte am Anfang nur Probleme mit Cursor-Locations und so, aber das lag an mir und konnte ich mit Hilfe hier aus der DP lösen).

Was ich damit sagen will: Die Devart-Komponenten sind super und ich nutze die auch an anderer Stelle. Aber wenn man die noch nicht hat und nicht kaufen mag und nur mal schnell den Zugriff auf den SQL Server braucht, dann geht das auch heutzutage mit dem ADO-Zeug noch ganz problemlos.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: ADO langsam :-(

  Alt 20. Mär 2017, 16:11

Zitat:
dass du die Objekte aus irgendeiner Abstraktionsschicht zur Verfügung gestellt bekommst, auf die du selbst keinen Einfluss hast.
...dort werden fiese Sachen wie der Wechsel des DBMS gemacht. Dort wird die TNxQuery zur TADOQuery. Letzendlich bleibt es aber auch eine ADOQuery. Das einzige was ich nur machen kann, ist auf der TDataSet Ebene. Da komme ich an die CursorLocation der Connection etc. nicht dran...ist aber auch nicht notwendig, weil die Abstraktionsschicht das regeln muß.
Zitat:
Aus dem Embarcadero Artikel: "SQL Server data in a TADOQuery"
...ich bin nicht allein.
Zitat:
Die hier genannte Option musste ich noch nie ändern
...mach doch mal einen Test bei dir mit Zeitvergleichen mit 100000 Objekten in einer Schleife.

Geändert von haentschman (20. Mär 2017 um 16:34 Uhr)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#19

AW: ADO langsam :-(

  Alt 20. Mär 2017, 17:07
Ich ziehe alles zurück und behaupte das Gegenteil. Weil hier immer vom Server die Rede war, habe ich zuerst nicht weit genug gedacht (außerdem ist ja Montag ), denn eigentlich habe ich auch schon ziemlich lange ein ähnliches Problem mit TADOQuery: wenn ich die Daten direkt vom Server hole, dann läuft, wie beschrieben, alles ganz wunderbar und ich habe die beschriebenen Performanceprobleme tatsächlich nicht. Aber: ich nutze von der ADOQuery die Funktionen LoadFromFile und SaveToFile. Wenn beim Kunden Probleme in den Daten auftreten, dann kann ich die beim Kunden mit SaveToFile in eine Datei schreiben und bei mir mit LoadFromFile wieder so importieren, als kämen sie direkt aus der Datenbank. Total praktisch, um Fehler zu analysieren.

Dabei war es nun so, dass das LoadFromFile bei mir ab einem bestimmten Umfang der Daten unglaublich langsam wurde. Das war immer sehr lästig (aber bisher doch selten genug, sodass ich einfach damit gelebt habe, zumal es ja nur mich beim Analysieren betrifft und nicht die Kunden direkt), aber ich bin dem Problem irgendwann nicht mehr weiter nachgegangen.

Ausgehend von deinem Beitrag und jetzt, wo ich heute Nachmittag doch mal mehr Zeit hatte, habe ich mir den Blog-Eintrag mal näher angeschaut und dachte mir, könnte doch auch für mich passen. Und tatsächlich: ein Aufruf von myQuery.DisbaleControls hat jetzt beim Test mit einem umfangreichen Datensatz die Importzeit von 110 Sekunden auf 20 Sekunden verkürzt. Cool.

Immer schön, wenn man unerwartet Lösungen für Probleme findet, bei denen man eigentlich schon resigniert hat. Danke dir also für den Thread und die Lösung!
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#20

AW: ADO langsam :-(

  Alt 20. Mär 2017, 17:10
Meine praktische Vorgehensweise, wenn ich in 'ner Schleife While not EoF über 'nen Dataset laufen muss:

Immer vorher DisableControls, egal um was für eine Datenbankkomponente und / oder Datenbank es sich handelt.

Machts (fast) immer deutlich schneller.

Egal ob ADO oder Zeos oder die schöne, alte TTable und per BDE ...

Sofern ein DataSet 'ner DataSource zugewiesen ist, hilft es, wenn's um Geschwindigkeit geht, ab und an auch, wenn man vorher der DataSource den DataSet auf NIL setzt und am Ende DataSet wieder zuweist.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 08:07 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