好吧,你可以在表格中有一个列,说明当前是否正在处理记录。在事务中,获取当前未处理的记录的数据,并更新记录以说明它正在处理中。有关如何处理争用的详细信息将取决于您创建的事务类型和您使用的数据库,但我怀疑事务应该是它的核心。
这是假设你 真 想要使用数据库而不是某些描述的消息队列。您可以考虑使用消息队列 结合在一起 使用数据库...并且一些数据库内置了队列,这也很有用。即使您也想要数据库中的记录,您也可以拥有ID的队列 - 客户端可以从队列中提取下一个项目,然后获取数据。您可能仍希望记录项目从队列中拉出的时间,以便在客户端崩溃或类似的情况下,批处理作业可以放置任何失败的作业(例如,那些在前一天被拾取但不是'还有结果)回到队列中。
使用数据库轮询ocr文件时,最好使用Windows消息传递服务。如果数据库已关闭并且您的ocr服务正在运行,则ocr服务将无法启动,除非数据库服务已启动,使用Windows消息传递队列您可以从消息传递服务获取ocr文件的信息(在线或关闭line)这样ocr服务将在机器启动后自动启动,并且数据库上不会出现任何死锁问题。