gpt4 book ai didi

c# - 将磁盘上的SQLite数据库加载到内存数据库中并进行同步

转载 作者:行者123 更新时间:2023-12-03 19:05:10 27 4
gpt4 key购买 nike

我有一个SQLite数据库,其中包含非常密集的重复读取和偶发写入。但是,写入(由于建立索引)往往会阻塞读取。我想将磁盘上的数据库读取到内存数据库中,然后在计算机完全空闲大约5-10秒时有一种同步回磁盘上的方法。我曾短暂地想将表从连接的磁盘数据库复制到内存数据库,但是似乎应该有更好的方法。我还考虑了在机器空闲时提交的事务(但这将阻止密集的读取)。读取包括要更新(或插入)的表,但是写入不对时间敏感。

最佳答案

您应该升级到SQLite 3.7.0或更高版本,其中包括预写日志记录。这种新的锁定方法允许在写入时进行读取。

http://www.sqlite.org/draft/wal.html

要在内存数据库和磁盘数据库之间进行复制,可以使用备份API,但尚未通过.NET包装器公开。

另外,通过增加缓存大小,您可以从磁盘数据库获得与内存数据库相同的性能-整个内容都可以缓存在内存中。

另一个选择是使用Oracle的BerkleyDB新版本,该版本的SQLite前端包含相同的.NET包装程序,并且可以替代官方SQLite版本。他们更改了锁定机制,以支持页面级锁定而不是数据库级锁定,并大大提高了并发性,从而提高了多连接性能。我自己没有用过,但是我读过好东西。

http://www.oracle.com/technetwork/database/berkeleydb/overview/index.html

关于c# - 将磁盘上的SQLite数据库加载到内存数据库中并进行同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7211739/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com