【发布时间】:2011-10-20 20:19:43
【问题描述】:
谁能推荐一个更适合并发连接的轻量级数据库?我将在多个线程上不断更新/插入/删除表中的行,所以我需要一些可以处理这个问题的东西。数据库非常小。只有 2 个表,一个有 3 列和 150 行只更新,第二个表有 2 列和最多 15,000 行不断插入、拉/删除,然后在表变小时插入新数据(基本队列)。
这样的逻辑需要 SQLite,因为它非常轻量级,但是我在 50 多个线程上进行调用的事实基本上会影响我的性能,因为 SQLite 的锁定。我所有的线程都在互相等待,基本上在大约 20 之后使线程毫无意义。
如果可以的话,我真的很想避免安装 mySQL 或 SQL 服务器的完整副本。我希望有一个更好的解决方案,但如果是这样的话,我会这样做。 (有人知道 SQL Express 4 是否更适合这个吗?)
我目前正在使用 SQLite.net 和实体 4.0 模型在 .net 框架 4.0 中进行开发,尽管这个问题应该适用于任何语言,因为 SQLite 被广泛使用。
提前致谢!
【问题讨论】:
-
你有哪些 SQLite 编译指示?你的日记模式是什么?沃尔?
-
为什么你认为问题出在 sqlite 的错误锁定上?您可能会因过多的上下文切换而受到惩罚,并且没有其他数据库能够表现得更好。 50+ 线程相当多,考虑减少这个数字。
-
ham:我已经在真正的数据库服务器上获得了更好的性能,这个问题已经解决了。如果可以的话,我会避免这种情况。
-
benoit:当前设置为删除,这是 SQLite.net 编辑器中的默认设置
-
我知道这一点的另一个原因,hamstergene,是因为我可以在 mySQL 中在 2-3 秒内插入 10,000 行,而同一台计算机上的 SQLite 可能需要一分钟多的时间。 =/
标签: sqlite concurrency sql-server-express