设置System.Data.SQLite中的连接超时时间

5

我认为我的SQLite连接发生了数据库连接超时,但我不确定如何增加连接超时时间。命令超时可以使用ConnectionString.DefaultTimeout进行设置,但Connection.ConnectionTimout只读。有什么建议吗?

谢谢, 布莱恩

2个回答

12

超过SQLite查询默认时间(30秒)的超时是您方法有问题的强烈指示。

当并发连接过多时,通常会出现超时。当您进行交错写入/读取事务时,SQLite 的行为表现不佳。

确保将相关的SQL语句划分到单个事务中(性能提升可能达到 x1000!)。

另一个提示:默认情况下,当您开始一个事务(BeginTransaction)时,获取一个写锁的默认行为是立即执行。尝试使用BeginTransaction(deferred)版本,指定您想要延迟获取写锁直到实际需要。这将有助于您处理多个读取器,因为现在它们将能够并发运行。


1
这是某人可以给出的最好建议。往往答案不是在它上面投入更多的硬件(在这里改变连接超时),而是找到性能问题的根源 - 查询。而那可能很难。我已经对许多数据库进行了性能分析,有些性能问题可能需要几周时间才能找到,但长期来看,在它上面投入更多的硬件并不是答案。 - Mike Perrenoud

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接