AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Geschwindigkeit-Zugriff Access ADO
Thema durchsuchen
Ansicht
Themen-Optionen

Geschwindigkeit-Zugriff Access ADO

Ein Thema von fhaehnel · begonnen am 1. Dez 2006 · letzter Beitrag vom 2. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
fhaehnel

Registriert seit: 28. Dez 2004
6 Beiträge
 
Delphi 7 Professional
 
#1

Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 07:35
Datenbank: Access • Version: 2000 • Zugriff über: ADO
Hallo,

wie sind eure Erfahrungen mit der Zugriffs-Geschwindigkeit auf eine Access-MDB per Ado ?

Ich versuche durch Anpassungen vom ConnString eine höhere Lesegeschwindigkeit bei ca 80.000 Datensätze zu erreichen, dennoch ist die ADO-Query/AdoNext einfach zu langsam.

Ich will das Problem mal kurz beschreiben:
Schon rein die Ado-Schleife (SQL-Command mit SELECT felder WHERE tbl ORDER BY datum) und Veränderungen an den Cursortyp und CursorLocation änderte an dem Zugriff nichts, die Datenbank vom Netzlaufwerk auf das Lokale LW zu verschieben brachte auch nichts.

Ich habe die Tabellen testweise auf eine lokale MSDE kopiert, nur die ConnString angepasst und es läuft wesentlich schneller, leider müssen die Zugriffe auf die MDBs laufen.

fhaehnel
  Mit Zitat antworten Zitat
hoika

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

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 07:39
Hallo,

CursorType sollte auf ctClient stehen,
weil Access ja keinen Server hat.

Bei der MSDE auf ctServer ?.
Dort würde auch der Firehouse-Cursor was bringen .

Ansonsten hats du bei der MDB wie bei jeder Acess-Datenbank
das Problem, dass 80000 Datensätze übers Netz laufen sollen
(warum die lokale nicht schneller ist, weiss ichnicht).
Hängt an der Query noch ne Datasource + DBGrid ? -> DisableControls.


Heiko
Heiko
  Mit Zitat antworten Zitat
fhaehnel

Registriert seit: 28. Dez 2004
6 Beiträge
 
Delphi 7 Professional
 
#3

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 07:44
nein

es ist eine einfach AdoQuery ( if not ADOQuery.IsEmpty then / while not ADOQuery.Eof do begin ) AdoNext - Schleife.

Ich habe auch schon den inhalt der Schleife herrausgenommen, es liegt an dem reine Zugriff.

fhaaehnel
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 08:40
Schon mal probiert mit den nativen ADO-Objekten zu arbeiten (also ohne die VCL-Wrapper)?

Ansonsten kannst Du mal mit AQTime die Bremse suchen. Bei den Wrapper gibt es eine Performance-Bremse wenn Queries geöffnet werden.

Ebenfalls könntest du die Einstellungen deiner TADOConnection und TADOQuery Posten. Ich würde dir auch raten TADODataset statt TADOTable/TADOQuery zu verwenden. Diese sind nur wegen der einfachen Portierbarkeit von BDE vorhanden und haben selbst ein paar Macken.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
hoika

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

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 10:12
Hallo,

unter Umständen ist es das IsEmpty,
nimm das mal weg.
Es reicht

while not EOF

EOF ist bei IsEmpty True.

Die BDE hatte damals beim Check auf IsEmpty alle Datensätze runtergeladen
und gezählt.


Heiko
Heiko
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 11:57
Dumme Frage: Was willst Du denn mit 80.000 Records anstellen? Geht das nicht auch mit DML?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Arthur Hoornweg

Registriert seit: 20. Dez 2005
17 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 13:58
Ich muss Hoika widersprechen.

Bei MDB Datenbanken sollte man wirklich lieber einen Serverseitigen Cursor nehmen (cursorlocation=cluseserver), bei "richtigen" Servern wie MSDE dagegen einen clientseitigen Cursor weil der sehr viel besser skaliert.

Der "Server" ist bei Access die Access/Jet DLL, der die Daten eh im lokalen Hauptspeicher verwaltet. Also auch bei einem Serverseitigen Cursor hat man bei Access die angefordeten Daten immer lokal im Hauptspeicher. Nimmt man einen Clientseitigen Cursor, werden die Daten von Ado noch einmal unnötigerweise kopiert. Teste mal beide varianten durch, und beobachte den Speicherverbrauch im Task manager.


Idealerweise sollte die MDB Datei auf der eigenen Festplatte liegen.
Arthur Hoornweg
  Mit Zitat antworten Zitat
hoika

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

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 15:34
ah ja,

so rum war es


Heiko
Heiko
  Mit Zitat antworten Zitat
fhaehnel

Registriert seit: 28. Dez 2004
6 Beiträge
 
Delphi 7 Professional
 
#9

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 20:17
ich habe einiges getestet, aber schneller ist es leider nicht geworden.

hier nochmals mein ConnString: Provider=Microsoft.Jet.OLEDB.4.0;Data Source="n:\db\datenbank.mdb";Persist Security Info=False

Dennoch erst mal vielen Dank für die Anregungen, für weiter Ideen an dieser Stelle würde ich mich freuen.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#10

Re: Geschwindigkeit-Zugriff Access ADO

  Alt 1. Dez 2006, 20:32
Zitat von fhaehnel:
..erst mal vielen Dank für die Anregungen, für weiter Ideen an dieser Stelle würde ich mich freuen.
Die Hauptidee fehlt sowieso noch. Also : Access wegwerfen und richtige DB benutzen.
Gruß
Hansa
  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 17:00 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