Hello all

If I look at the "Locking And Concurrency"-Description from my 
current Viewpoint, as a Viewpoint with present understandig, the 
Description is ok. 

If I remember to my Viewpoint in the past, without this present 
understandig, before some very pleasant helppostings explain the 
coherences, the Description stays imho a little bit behind a fog. 
It is not closing clearly, in particular if a User migrate from 
OLE-DB.

A simple list of facts like the following example at the end of the 
existing Description would be amazing. I have read all postings 
again and collect the important statements and aspects. If anyone 
found this later in this list, i hope it is helpful to him.

Facts:
- SQLLite is not a Server-DBMS, but a Single-File-Database on your
  Harddisk/Server-Filesystem.

- How many users can share a file? So much as needed. Sqlite can be 
  shared between users just like a word-processing file shared between 
  multiple users. It just uses the regular fcntl-type file locks. 

- SQLite handles the Filelockings during its write to File as a 
  Filelocking based on the operating system, not based on the DB-Tables
  and Records. 
  Remarks (MS, fcntl-Routines)   The Locking-Function locks or unlocks
  nbytes bytes of the file specified by fd. 
  Locking bytes in a file prevents access to those bytes by other 
  processes. All locking or unlocking begins at the current position of 
  the file pointer and proceeds for the next nbytes bytes. It is possible 
  to lock bytes past end of file.

- Sqlite does the needed filelocking automatically until the changes to 
  be written to file. During this Process prevent SQLite concurrent 
  access (Read and Write). That takes just as long until changes are 
  written succesful to file.

- Now, if there are multiple processes trying to update the same database
  file, only one can update it at a given moment. Attempts to do updates, 
  or start a transaction will fail with an error indicating the database 
  is locked. 
  This applies even if the two processes are updating different tables. 
  That is in Contrast with a full database server (like SQL server, MySql,
  etc.), which has grained locking, and can let two processes update 
  different tables, or even different rows on the same table, at the 
  same time.

- Provided you code handles the errors ((SQLITE_BUSY) by retrying the 
  update until it succeeds), it should work fine. However, if there are 
  lots of processes doing large updates to the same database file, they 
  may be waiting for each other a lot.

- A "logical" Recordlocking behalf a current Record/Row during a View or a 
  Edit, or behalf a current leading Record and his set of appended 
  Childrecords in other tables, is in the current version not 
  implemented and primary not supported. A Application have to do this 
  by itself.

Hopeful that my collection is correct... :-)

Greetings to all from Germany
Anne
        

-- 


"Feel free" – 10 GB Mailbox, 100 FreeSMS/Monat ...
Jetzt GMX TopMail testen: http://www.gmx.net/de/go/topmail

Reply via email to