【问题标题】:SQLite as an App Queue, Exclusive Row Lock?SQLite 作为应用程序队列,排他行锁?
【发布时间】:2011-01-28 06:21:34
【问题描述】:
我正在考虑使用 SQLite 作为“作业队列容器”,并且想知道如何使用自定义 C#(使用 ADO.NET)来处理数据库。
如果这是 SQL Server,我会设置一个可序列化的事务,以确保在我完成之前,父行和子行都是我的。我不确定这在 SQLite 中如何工作,有人可以提供任何帮助吗?
或者,如果有任何其他现有的使用 SQLite 进行消息队列的实现,我也将不胜感激任何指向该方向的指针。
谢谢!
【问题讨论】:
标签:
c#
sqlite
queue
message-queue
【解决方案1】:
根据您的 MS SQL 经验,您可以在 SQLite 中做什么? sqlite 有很好的包装器,所以类是相同的,但以 Sqlite 开头(如 SqliteConnection)。它有一些差异,但它们很容易处理。
那么使用 sqlite 作为队列有什么问题呢?在入队时插入行,在出队时选择具有最大 id 的行然后删除。
【解决方案2】:
SQLite 为写操作锁定整个文件。在事务中执行您的写入,在您的事务完成之前,其他人将无法访问数据库中的任何表。