On 25 Sep 2009, at 6:58am, CityDev wrote:

> What that seems to be saying is you can have concurrency but you  
> will suffer
> the effects of whole-database locking for update transactions. It  
> seems a
> glaring shortcoming, so either SQLite is not normally used by multiple
> processes or people find it doesn't matter too much ie you still get
> acceptable performance with n users. Which do you think is true?

The former.  SQLite is the SQL of choice for embedded applications:  
things running inside a smartphone, or a GPS unit or something.  Since  
these units run just one UI application at a time, you don't need to  
worry about sophisticated locking mechanisms.  Only one processor is  
used to run user-aware programs.  If you're running a program to  
consult a database of phone numbers or map features or songs, that's  
the only program that cares about that kind of data.  While you're  
downloading new data for those databases, the entire device is locked  
in 'synch' mode anyway, so no other programs will be running.

Once you've made that design choice, the points Roger mentioned come  
into play: SQLite library calls are designed to let you do as much  
processing as possible before you need to lock the file.  This is not  
true of all SQL engines which will do some processing, lock a record,  
unlock it, do more processing, lock the next record, etc..

SQLite is great for what it's designed for.  But it's not designed for  
complicated multi-user online databases.  You pays your money and you  
gets your choice.

Simon.
_______________________________________________
sqlite-users mailing list
[email protected]
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to