in reply to multi threading DBI
Nope ... in this case ... wrong answer. (And this is meant in the most impersonal manner possible, so nobody get their feelings hurt please.) If “SQLite is too slow,” then the problem is going to turn out to be that: “you must use transactions.” Until you do that, SQLite will be dog-slow; after you do that, it’s extremely fast. Blisteringly fast.
Outside of the auspices of a transaction, SQLite physically verifies every disk-write, by flushing to disk, re-reading the block and comparing it. And, nothing gets held in memory. In-memory copies of a block are not re-used in case the underlying data might have changed. This is a fundamental design-aspect of this system. When a transaction is under way, however, SQLite does as much as it can in in-memory buffers, with “lazy writes” and all of the things that you would ordinarily expect. Whether you are reading or writing, always do anything-and-everything within the scope of a transaction, and your performance problems will be solved.
Obviously, I am being a little-bit brash here, but I do in this case speak from very first-hand experience. I had concluded okay, she’s a dog, then discovered just how dramatically(!) wrong I was. (“Even for reading?!” Yes, even for reading. “Will it really make that much difference?” Yes, that much.)
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: multi threading DBI
by BrowserUk (Patriarch) on Oct 29, 2013 at 19:13 UTC | |
by marinersk (Priest) on Oct 29, 2013 at 19:28 UTC | |
by Laurent_R (Canon) on Oct 29, 2013 at 22:43 UTC | |
by BrowserUk (Patriarch) on Oct 29, 2013 at 19:51 UTC | |
by marinersk (Priest) on Oct 30, 2013 at 00:12 UTC | |
|
Re^2: multi threading DBI
by dasgar (Priest) on Oct 29, 2013 at 19:21 UTC | |
|
Re^2: multi threading DBI
by Anonymous Monk on Oct 30, 2013 at 06:54 UTC | |
by BrowserUk (Patriarch) on Oct 30, 2013 at 07:55 UTC | |
by Anonymous Monk on Oct 30, 2013 at 19:01 UTC | |
by BrowserUk (Patriarch) on Oct 30, 2013 at 20:08 UTC | |
by Anonymous Monk on Oct 31, 2013 at 06:56 UTC | |
|