Also für mich ist zumindest in unser Firma das nicht installieren müssen ein sehr gewichtiges Argument (zwecks der fehlenden Admin rechte).
Wir haben wenn mein Programm je bei den Kollegen ankommt und dann auch genutzt wird nur ca. 50 Benutzer, welche das Teil eher selten (sprich 1-2 mal am Tag) nutzen werden. Da sind die Filelocks die ich dazugebastelt habe eher spielerei. Mein Plan ist es euch das Programm auch vor zu stellen, momentan ist es aber noch nicht ausgereift genug...
Wie nehme ich den Lock einer DB weg ?
- corpsman
- Lazarusforum e. V.
- Beiträge: 1617
- Registriert: Sa 28. Feb 2009, 08:54
- OS, Lazarus, FPC: Linux Mint Mate, Lazarus GIT Head, FPC 3.0
- CPU-Target: 64Bit
- Wohnort: Stuttgart
- Kontaktdaten:
Re: Wie nehme ich den Lock einer DB weg ?
--
Just try it
Just try it
Re: Wie nehme ich den Lock einer DB weg ?
Ich habe ja auch nur mal nach den Gründen gefragt.
Auch bei uns gibt es ein mickriges Miniprogramm das SQLite verwendet, aber die Kommunikation mit den Clients erfolgt über lnet damit bleibt es beim Single-Zugriff auf SQLite.
Gruß und ruhige Festtage
hde

Auch bei uns gibt es ein mickriges Miniprogramm das SQLite verwendet, aber die Kommunikation mit den Clients erfolgt über lnet damit bleibt es beim Single-Zugriff auf SQLite.
Gruß und ruhige Festtage
hde
-
- Beiträge: 93
- Registriert: Di 17. Apr 2012, 22:41
Re: Wie nehme ich den Lock einer DB weg ?
Dein Problem ist simpel, wenn wan SQLite näher kennt.
Wie du schon bemerkt hast ist ein Table "Locked" solange der Fetch der Daten nicht vollständig ist. SQLite arbeitet hier sequentiell, leider. Zeos führt einen vollständigen fetch durch, cached die Daten und führt das nötige Reset mit dem Statment-Handle durch. Das ist eines der Phänomäne, warum Zeos+SQLite "langsamer" erscheint, jedoch kannst du vollständig mit dem Table arbeiten.
Ich weiß nicht genau wie das TBufferDataSet der SQLDB Komponenten arbeitet (ob es alle Daten chached o. nicht) jedoch solltest du den Table bis zum Ende mit TSQLQuery.Last; vollständig einlesen, dann (so hoff ich doch??) solte der "Reset" des Handles durchgeführt werden. >>>>> Womit sich die selbe Performance ergibt
, du jedoch mit einem weiteren Statement an der Tabelle arbeiten kannst.
Gruß Michael
Wie du schon bemerkt hast ist ein Table "Locked" solange der Fetch der Daten nicht vollständig ist. SQLite arbeitet hier sequentiell, leider. Zeos führt einen vollständigen fetch durch, cached die Daten und führt das nötige Reset mit dem Statment-Handle durch. Das ist eines der Phänomäne, warum Zeos+SQLite "langsamer" erscheint, jedoch kannst du vollständig mit dem Table arbeiten.
Ich weiß nicht genau wie das TBufferDataSet der SQLDB Komponenten arbeitet (ob es alle Daten chached o. nicht) jedoch solltest du den Table bis zum Ende mit TSQLQuery.Last; vollständig einlesen, dann (so hoff ich doch??) solte der "Reset" des Handles durchgeführt werden. >>>>> Womit sich die selbe Performance ergibt

Gruß Michael
ZeosDevTeam
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: Wie nehme ich den Lock einer DB weg ?
Das heisst die SQlite3 DB Dateien sind im Netzwerk abgelegt? Das ist glaube ich keine gute Idee.corpsman hat geschrieben: Wir haben wenn mein Programm je bei den Kollegen ankommt und dann auch genutzt wird nur ca. 50 Benutzer, welche das Teil eher selten (sprich 1-2 mal am Tag) nutzen werden.
http://www.sqlite.org/faq.html#q5
Code: Alles auswählen
You should avoid putting SQLite database files on NFS if multiple processes might try to access the file at the same time.