![]() |
Datenbank: sqlite • Version: 3 • Zugriff über: firedac
Select Abfrage einmalig langsam
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? |
AW: Select Abfragen einmalig langsam
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, ..) |
AW: Select Abfrage einmalig langsam
Auf SQLite über Firebird zugreifen?
10 sec halte ich für eine lokale DB für sehr viel..... Gruß K-H |
AW: Select Abfrage einmalig langsam
Zitat:
|
AW: Select Abfrage einmalig langsam
Zitat:
|
AW: Select Abfrage einmalig langsam
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 |
AW: Select Abfrage einmalig langsam
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. |
AW: Select Abfrage einmalig langsam
Zitat:
;) 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. |
AW: Select Abfrage einmalig langsam
Zitat:
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. |
AW: Select Abfrage einmalig langsam
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:46 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