Dan Kennedy wrote:
> On 11/18/2015 03:37 PM, T?r?k Edwin wrote:
>> On 11/17/2015 12:11 AM, Deon Brewis wrote:
>>> We found that using SQLITE memory mapped I/O (mmap_size > 0) in OSX isn't
>>> usable in any way shape or form. It will inevitably lead to catalog
>>> corruption if you hard-reboot OSX, even without the database or application
>>> open.
>>>
>> I tried to turn on mmap I/O in SQLite 3.9.1 in our application on CentOS 7
>> and Debian Jessie, but after 24-48h of continous writes to the DB I always
>> get a corruption:
>> SQLite result 0xb: database corruption at line 76915 of [767c1727fe]
>> SQLite result 0xb: statement aborts at 10: [DELETE FROM revision_blocks
>> WHERE revision_id=:revision_id]
>> Query "DELETE FROM revision_blocks WHERE revision_id=:revision_id" failed:
>> (code 0xb: database disk image is malformed) database disk image is malformed
>>
>> After this 'pragma integrity check' says:
>> row 90814 missing from index sqlite_autoindex_revision_ops_1
>> wrong # of entries in index sqlite_autoindex_revision_ops_1
>> row 1046646 missing from index idx_revmap
>> row 1046646 missing from index sqlite_autoindex_revision_blocks_1
>> wrong # of entries in index idx_revmap
>> wrong # of entries in index sqlite_autoindex_revision_blocks_1
>>
>> There are not reboots involved, just multiple processes accessing a WAL DB.
>> Without mmap I/O I've never seen corrupted DBs in our application.
>
> As of yesterday, SQLite uses a read-only mapping in mmap mode. The db file is
> written using plain old write(), just as in non-mmap mode:

That's the safest way to use mmap, but keep in mind that this requires a 
unified buffer cache and systems like OpenBSD still don't have that, so this 
approach will cause corruptions on systems like that.
>
>    http://sqlite.org/src/info/67c5d3c646c8198c
>
> It would be interesting to know if this clears the problem in your 
> environment.


-- 
   -- Howard Chu
   CTO, Symas Corp.           http://www.symas.com
   Director, Highland Sun     http://highlandsun.com/hyc/
   Chief Architect, OpenLDAP  http://www.openldap.org/project/

Reply via email to