AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Umstellung ADO -> DBExpress
Thema durchsuchen
Ansicht
Themen-Optionen

Umstellung ADO -> DBExpress

Ein Thema von ToFaceTeKilla · begonnen am 22. Dez 2010 · letzter Beitrag vom 23. Dez 2010
Antwort Antwort
Seite 1 von 2  1 2      
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#1

Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 12:33
Datenbank: MS SQL Server • Version: 2000 - 2008R2 • Zugriff über: DBexpress
Hiho,

So, zwar gleiches Thema, aber andere Fragen:
Wie ich hier schrieb, planen wir von ADO auf DBX umzusteigen.
Da wir nur unidirektional auf die Daten zugreifen, sehe ich darin erstmal kein Problem.
Wir benutzen hauptsächlich TADODataSet und TADOCommand. Ist es möglich diese ohne weiteres auf TSQLDataset bzw. TSQLQuery umzustellen? D.h. ist TSQLQuery überhaupt das Pandon zu TADOCommand?
Gibt es evtl. generelle Unterschiede in der Datenbehandlung, z.B. im Hinblick auf NULL, Datumswerte, Booleanwerte, etc.?

Vielen Dank schonmal
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 13:22
Wenn du nur auf MS SQL Server zugreifst bleib bei ADO. Ist der native Zugriffsweg. dbExpess verkompliziert hier nur den Zugriff.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#3

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 13:44
Naja, wir reden hier aber von einem Unterschied von 10 Minuten (ADO) zu 4 Sekunden (DBX) bei ein und derselben Abfrage. Das ist schon erheblich.
Es sei denn du kannst mir verraten, wie man ADO zu einer solcher Geschwindigkeit kriegt. Ich hab schon ein bisschen rumprobiert, z.B. CursoLocation auf clUseServer gesetzt, wodurch ich die Performance zwar verbessern konnte, was aber an anderer Stelle wieder zu Fehlern geführt hat, weil auf einmal RecordSets leer waren (die definitv nicht leer sein können). Im Großen und Ganzen weis ich aber nicht, was man da noch alles wie rauskitzeln kann.
Der Zugriff auf die Daten erfolgt im Prinzip wie folgt (beispielhaft):
Delphi-Quellcode:
procedure GetData;
var
  DataSet: TADODataSet;
begin
// Verbindung aufbauen
{...}
DataSet.Open;
while not DataSet.Eof do
begin
// Daten lokal in Objekten speichern
{...}
DataSet.next;
end

end;
Die Datenübertragung vom Server zum Client ist dabei (clUseClient) in wenigen Sekunden beendet. Das Iterieren durch das Dataset braucht dann ewig (~10min).
Gleicher Code nur mit TSQLDataSet (also DBX) ist in ca. 4 Sekunden erledigt.

Also wenn es da was zu verbessern gäbe, würde das auch reichen
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 14:05
kenn' ich so gar nicht (so viele Daten ? / Blobs?), wobei serverseitige Cursor mit MSSQL-Server ohnehin problematisch sind. Hast Du schon mal:
Delphi-Quellcode:
 Adodataset1.LockType := ltBatchOptimistic;
 Adodataset1.Open;
 Adodataset1.Connection := nil;
 While not .....
versucht ?
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 14:15
...Ich hab schon ein bisschen rumprobiert, z.B. CursoLocation auf clUseServer gesetzt, ...
Beim MS SQL Server sollte man möglich mit clUseClient arbeiten. Nur bei Anbindung an Grid wäre hier clUseServer besser.

...stelle wieder zu Fehlern geführt hat, weil auf einmal RecordSets leer waren (die definitv nicht leer sein können).
Wir hier evtl. mit ExecuteOptions.eoAsyncExecute gearbeitet?

Die Datenübertragung vom Server zum Client ist dabei (clUseClient) in wenigen Sekunden beendet. Das Iterieren durch das Dataset braucht dann ewig (~10min).
Sollte bei clUseClient kein Problem darstellen. [/QUOTE]
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#6

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 14:44
kenn' ich so gar nicht (so viele Daten ? / Blobs?), wobei serverseitige Cursor mit MSSQL-Server ohnehin problematisch sind. Hast Du schon mal:
Delphi-Quellcode:
 Adodataset1.LockType := ltBatchOptimistic;
 Adodataset1.Open;
 Adodataset1.Connection := nil;
 While not .....
versucht ?
Was kennst du so gar nicht?
Ich hab das jetzt mal mit verschiedenen LockTypes probiert. Ergebnis:
ltBatchOptimistic: 503 Sekunden
ltOptimistic (default): 508 Sekunden
ltReadOnly: 506 Sekunden
ltPessimistic 509 Sekunden

Die Werte liegen unter 10 Min. weil ich in dem Bsp. alles unnötige weggelassen habe (Anzeigeaktualisierung, Application.ProcessMessage...).
Macht also auch keinen unterschied.
Beim MS SQL Server sollte man möglich mit clUseClient arbeiten. Nur bei Anbindung an Grid wäre hier clUseServer besser.
Ne mit Grids arbeiten wir nicht. Wir holen uns immer alle benötigten Daten ab und halten die im Speicher.
Wir hier evtl. mit ExecuteOptions.eoAsyncExecute gearbeitet?
Nein. War beim Aufruf einer Stored Procedure.
Sollte bei clUseClient kein Problem darstellen.
Bei clUseServer waren es dann aber (im nicht-optimierten Bsp.) nur noch 4 statt 10 Minuten. Und der Server entspricht von der Leistung her ungefähr meiner Workstation.

Edit: Zeit bei Readonly vergessen...
Edit2: ltPessimistic ergänzt
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann

Geändert von ToFaceTeKilla (22. Dez 2010 um 14:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 14:46
Hast du einen Profiler zur Hand? Unter D6 hatten wir performanceprobleme bei öffnen einer Dataset. War dann die bestimmung des Autoinc-Feldes. Evtl. gibts ja in D2010 auch ein Bottleneck bei ADO. Würde sich mit AQTime & Co. sehr schnell finden lassen.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#8

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 14:51
Ja, den im SQL Server Management Studio enthaltenen Profiler. Auf was muss ich den einstellen bzw. nach was suchen?
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 15:18
Nein, einen Profiler für den Pascal-Quellcode.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
ToFaceTeKilla

Registriert seit: 17. Mai 2006
Ort: Leipzig
283 Beiträge
 
Delphi XE2 Professional
 
#10

AW: Umstellung ADO -> DBExpress

  Alt 22. Dez 2010, 16:57
OK, während ich (bisher erfolglos) mit ProDelphi rumgespielt habe, hat mein Kollege in der Zwischenzeit durch händisches Profiling (^^) die Lösung gefunden:
Delphi-Quellcode:
...
DataSet.DisableControls;
DataSet.Open;
...
bringt einen Performanceschub, sodass ADO die Aufgabe auch in 4 Sekunden erledigt. Und das obwohl wir keine Datencontrols benutzen.

Gut, dann wirds wohl bei ADO bleiben.

Trotzdem danke ich euch, für die schnelle Hilfe
Billy Gerwitz
"Bei der Softwareentwicklung suchen wir nicht den richtigen Weg, sondern den am wenigsten falschen." - frei nach V. Hillmann
  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 02:16 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