[elephant-devel] Berkeley DB error: Cannot allocate memory.
Alex Mizrahi
killerstorm at newmail.ru
Thu Sep 25 11:45:40 UTC 2008
M> that sounds like the key for this specific mismatch of the BDB locking
M> philosophy – which for the scenarios you describe is perfect – and our
M> quite different needs.
there is other sort of locking philosophy in BDB too -- so-called "snapshot
isolation"
(also known as multi-version concurrency control). check this:
http://www.oracle.com/technology/documentation/berkeley-db/db/ref/transapp/read.html
----
Snapshot isolation also guarantees repeatable reads, but avoids read locks
by using multiversion concurrency control (MVCC). This makes update
operations more expensive, because they have to allocate space for new
versions of pages in cache and make copies, but avoiding read locks can
significantly increase throughput for many applications. Snapshot isolation
is discussed in detail below.
If the cache becomes full of page copies before the old copies can be
discarded, additional I/O will occur as pages are written to temporary
"freezer" files.
----
so it seems if you use snapshot isolation, you won't have "cannot allocate
memory', but if cache is too small performance will be degraded due to
additional I/O.
but i haven't used it myself, so i dunno if it's really so.
More information about the elephant-devel
mailing list