SQLite并发问题是一个交易破坏者?

时间:2010-06-30 10:09:21

标签: mysql database asp.net-mvc sqlite

我正在寻找最终可能托管的家庭项目(ASP.NET MVC)的数据库。在Stack Overflow上阅读类似问题here之后,我决定选择MySQL。

然而,易于使用& SQLite的部署很诱人,我想在完全写完之前确认我的理由。

我的目标是维护用户状态消息(如Twitter)。这将主要意味着具有用户ID /状态消息对的单个表。读取/插入/删除状态消息的操作。无需修改。

阅读以下段落后,我决定SQLite不适合我。我有一个简单的数据库,但由于我的所有事务都与SAME表一起工作,我可能会遇到一些问题。

SQLite在整个数据库文件中使用读取器/写入器锁。这意味着如果任何进程正在从数据库的任何部分读取,则阻止所有其他进程编写数据库的任何其他部分。同样,如果任何一个进程正在写入数据库,则阻止所有其他进程读取数据库的任何其他部分。

我的理解天真吗? SQLite能为我工作吗? MySQL也提供了SQLite在使用ASP.NET MVC时不会提供的东西吗? VS的易于开发可能吗?

2 个答案:

答案 0 :(得分:3)

如果你愿意等半个月,下一个SQLite版本打算支持write-ahead logging,这应该允许更多的写入并发。

答案 1 :(得分:1)

我甚至无法得到简单的并发SQLite声称支持工作 - 即使在几次询问SO之后。

修改 自从我写完以上内容后,我已经能够获得并发写入和读取以使用SQLite。看起来我没有正确处理NHibernate会话 - 在创建会话的所有代码周围使用块解决了问题。 的 /修改

但它可能适用于您的应用程序,尤其是user380361提到的预写日志记录。

占地面积小,单个文件安装,速度快,适用于NHibernate,免费,公共领域 - 几乎在所有方面都是非常好的产品!