if I use BEGIN_EXCLUSIVE for replace (i.e. write) transactions ann receive a BUSY state for -say- one of two "concurrent" hits, is a rollback required? I think not? I can simply re-try can I not? My thinking is that no "work" has been performed, hence a retry will be sufficient?
-rosemary. On May 22, 2009, at 4:10 PM, Rosemary Alles wrote: > Dear Olaf, > > On May 22, 2009, at 3:21 PM, Olaf Schmidt wrote: > >> >> "Rosemary Alles" <al...@ipac.caltech.edu> schrieb im >> Newsbeitrag >> news:f113017d-8851-476d-8e36-56b2c4165...@ipac.caltech.edu... >> >>> I have a database (simple schema) with two tables on which I >>> perform "concurrent" udpates over NFS ... >>> ... >>> Large updates, distributed over several cores over NFS - >>> supposedly concurrent "but not really"? >> Could you give some more detailed background-info about >> your current scenario? >> >> What do you mean with "cores"? >> Are these multiple client *machines* - or do we talk about >> a sinlge client-machine with multiple (cpu-)cores here? >> > > Multiple machines with multiple cpus. > > >> In case you mean only "several cores" on a single client-machine - >> why is your DB "behind" NFS at all (and not on a local disk)? >> > > N/A - see above - several machines. > >> In either case (be it multiple client-machines which talk to your >> DB - or just multiple cores on a (capable but) single client- >> machine - you will not achieve faster inserts against your DB >> by working concurrently (regarding the write-direction to the >> SQLite-DB). >> SQLite can profit from multiple cores (threads) only in the >> Read-Direction. > > > We achieve neither, they are both (read and write - not done > simultaneously, i.e. never read when writing and vice versa) god awful > slow. > >> >> >> That does not mean, that your Inserts will be slow (if only >> one process/thread or core will handle them) - after all you >> perform your DB-writes against a single resource (your disk). >> And whilst working against a local disk, SQLite can achieve >> ca. 50000-200000 inserts per second, depending of course >> on the Column-Count and if the underlying table has indexes >> defined on its columns. In my tests I can achieve ca. >> 120000 inserts per second on a table with 8 "mixed-type" >> Columns (having no indexes defined on it - normal 7200rpm >> SATA-HardDisk). >> > > Obviously, we are doing something weird, or our NFS configuration is > strange or whatever. The disk is obviously not local The insert speeds > you specify are more than likely heavily dependent on configuration/ > setup. Are you also working on multiple machines with multiple cpus > over NFS? > >> So, what timings do you currently get, in case you perform >> your updates only running on one single client (or core)? > > In this case, on a local disk, much less than a second per update. > However, scaled over the previously described "concurrent" scenario > with several identical copies of the process (program) attempting to > access the database over NFS from several computers with several cpus > - up to a minute per update - It's ridiculous. > >> >> And could you please check the DB-Size before and after >> such a typical "update-job" (so that we get an impression >> about the transferred byte-volume - maybe you could also >> give the count of new records in case of insert-jobs)? >> > > Don't have those numbers handy, but will soon. The total size of > current DB is up to 70mb. > >> And do you work over GBit-Ethernet (or an even faster >> "NFS-channel")? >> > > The latter. > > My primary concern now is to prevent a dead-lock. > > Many thanks, > rosemary. > >> Regards, >> >> Olaf Schmidt >> >> >> >> _______________________________________________ >> sqlite-users mailing list >> sqlite-users@sqlite.org >> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users > > _______________________________________________ > sqlite-users mailing list > sqlite-users@sqlite.org > http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users