Wie nehme ich den Lock einer DB weg ?

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Benutzeravatar
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 ?

Beitrag von corpsman »

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...
--
Just try it

hde
Beiträge: 556
Registriert: Mi 11. Aug 2010, 02:56

Re: Wie nehme ich den Lock einer DB weg ?

Beitrag von hde »

Ich habe ja auch nur mal nach den Gründen gefragt. :wink:
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

EgonHugeist
Beiträge: 93
Registriert: Di 17. Apr 2012, 22:41

Re: Wie nehme ich den Lock einer DB weg ?

Beitrag von EgonHugeist »

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 :wink: , du jedoch mit einem weiteren Statement an der Tabelle arbeiten kannst.

Gruß Michael
ZeosDevTeam

mse
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 ?

Beitrag von mse »

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.
Das heisst die SQlite3 DB Dateien sind im Netzwerk abgelegt? Das ist glaube ich keine gute Idee.
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.

Antworten