AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Select Abfrage einmalig langsam
Thema durchsuchen
Ansicht
Themen-Optionen

Select Abfrage einmalig langsam

Ein Thema von Dr. Jack · begonnen am 13. Feb 2019 · letzter Beitrag vom 15. Feb 2019
Antwort Antwort
Seite 1 von 3  1 23      
Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#1

Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 13:13
Datenbank: sqlite • Version: 3 • Zugriff über: firedac
Hallo zusammen,

wenn ich eine Selecte absetze, dauert es einmalig bis zu 10 Sekunden, bevor die Daten geladen sind.
Aber das ist nur einmalig bei der ersten Abfrage nach Programmstart. Die nächsten Anfragen laufen dann wieder in gewohnter Geschwindigkeit.
Was kann das sein?

Geändert von Dr. Jack (13. Feb 2019 um 14:10 Uhr)
  Mit Zitat antworten Zitat
jobo

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

AW: Select Abfragen einmalig langsam

  Alt 13. Feb 2019, 13:25
Vielleicht einfach die 10 Sekunden, die es braucht, um die Datei lokal zu cachen.
Wenn Du etwas mehr zum Setup schreibst, müssen andere weniger raten. (Device/Plattform, Netz, Größe, Anzahl Datensätz, ..)
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 13:43
Auf SQLite über Firebird zugreifen?
10 sec halte ich für eine lokale DB für sehr viel.....

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

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#4

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 13:58
Auf SQLite über Firebird zugreifen?
Sollte das nicht FireDAC heißen? Oder habe ich was verpasst?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#5

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 14:10
Auf SQLite über Firebird zugreifen?
Sollte das nicht FireDAC heißen? Oder habe ich was verpasst?
jo tatsächlich. danke
  Mit Zitat antworten Zitat
Dr. Jack

Registriert seit: 17. Mär 2010
78 Beiträge
 
Delphi 10.2 Tokyo Architect
 
#6

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 14:12
das Ganze läuft über ein Netzlaufwerk (win 2008 Server), Client in ein win7 Rechner, Netzwerkgeschwindigkeit.
ca. bis 4 Gbit, je nach Auslastung. Es muss irgendetwas in der Programmierung sein. Leider komme ich nicht drauf
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

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

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 14:15
Wie groß ist die DB und werden Indexes verwendet?
Initial muss viel Daten über das Netzwerk übertragen werden.
Beim zweiten mal liegen diese schon im Windows-Dateicache vor und es geht viel schneller.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
jobo

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

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 14:17
Es muss irgendetwas in der Programmierung sein. Leider komme ich nicht drauf
Dann zeig doch mal irgendwas von Deinem Programmcode, dann kommen wir bestimmt drauf.


Deja Vu, Phänomen kommt mir bekannt vor, Thema auch.

Alle Datasets/Queries ungefiltert zum Programmstart öffnen, das kann solche Effekte haben. Erst Recht, wenn die ein oder andere komplexe Quuery dabei ist.

So oder so, man macht es nicht. Das würde ich unter Konzeptfehler laufen lassen.
Gruß, Jo
  Mit Zitat antworten Zitat
hhcm
Online

Registriert seit: 12. Feb 2006
Ort: Wegberg
310 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 14:20
...Es muss irgendetwas in der Programmierung sein. Leider komme ich nicht drauf
Eigentlich nicht. Das "Problem" hatte ich auch schonmal, dabei war es nur ein Denkfehler. Eine SQLite Datenbank ist nunmal eine Dateibasierte Datenbank.
Es gibt keinen Server der über´s Netzwerk mit Daten antwortet.
Öffnest du die SQLitedatenbank, so wird die komplette SQLite Datei über´s Netzwerk Lokal gecached. Dann machst du dein Query und es kommen Daten.
Selbes Query erneut - (Datei muss nicht mehr kopiert werden) - Schnelleres Ergebnis.
Chris
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#10

AW: Select Abfrage einmalig langsam

  Alt 13. Feb 2019, 14:45
Wenn 'ne Datenbank 'ne Abfrage macht, muss sie die Daten erstmal vom Datenträger lesen.

Je nach "Intelligenz" des Datenbanksystems und des darunter liegenden Betriebssystems, befinden sich dann mehr oder weniger viele der Daten im Cache. Deshalb sind nachfolgende (und weitgehend identische) Operationen für gewöhnlich schneller, als der erste "Anlauf". Das ist eigentlich ein vollkommen normales Verhalten.

Wenn man nun beachtet, das erstens die Festplatten über 'nen Cache verfügen, dann das Betriebssystem 'nen eigenen Cache vorhält, ja nach Datenbank diese ebenfalls gelesene Daten cached, dazu das Betriebssystem des Clients noch was cached, können da schonmal deutliche Zeitunterschiede bei rauskommen.

Und gerade bei dateibasierten Systemen kann hier ein sehr deutlicher Zeitunterschied entstehen, insbesondere dann, wenn man die Daten auch noch übers Netzwerk holt.

Mach mal für ein größeres Verzeichnis auf der Kommandozeile ein dir *.* /s und stoppe die Zeit. Und dann machst Du das sofort nochmal. Du wirst dann auch dabei einen Zeitunterschied feststellen. Beim ersten Mal muss das Verzeichnis von der Platte gelesen werden, beim zweiten "Anlauf" wird's aus dem Cache gelesen und damit liegt das Ergebnis deutlich schneller vor.

Das Ganze hängt dann noch von den Größen der jeweiligen Caches ab, so dass auf unterschiedlich konfigurierten Systemen auch da noch unterschiedliche Zeiten bei rauskommen, selbst dann, wenn technisch Hardware, Betriebssystem, Datenbanksystem und Clientsoftware übereinstimmen.

Es gibt da vielzuviele Schrauben, an denen man was drehen kann, um bei erstmaliger, langer Laufzeit direkt auf 'nen Implementierungsfehler, der nach Beseitigung das Problem aus der Welt schafft, hoffen zu können.

Und hhcms Hinweis ist absolut korrekt. Bei SQLite wird zuerst mal die Datenbankdatei über das Netzwerk gelesen, sie befindet sich dann im Arbeitsspeicher Deines Rechners (und notfalls (teilweise) in der Auslagerungsdatei Deines Rechners). Der Zugriff dadrauf ist einfach schneller, als das erstmalige Lesen der Datei übers Netz.

Es wäre fast schon verwunderlich, wenn der erste Zugriff genauso schnell wäre, wie die nachfolgenden Zugriffe. Das würde nämlich bedeuten, dass sämtliche Anstrengungen, die für die Implementierung der Caches (die der Beschleunigung wiederholter Lese- und Schreibzugriffe dienen) gemacht wurden, für die Katz wären.

Geändert von Delphi.Narium (13. Feb 2019 um 19:45 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 10:40 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