一个类似于车票预订冲突的经典问题,请教高手如何解决。
这是一个类似于车票预订冲突的经典问题。
我正在开发一个人工复核图片的应用,功能是从一个Oracle的表中读出待复核的图片记录,人工复核后将结果填回记录中。
现在的难点是该系统有30个操作人员,如何处理并发问题?如操作员A读出一条记录开始处理,操作员B就不能再读出了。
我现在的解决方案是设标志位,待复核记录的初始状态是“未复核”,操作员A读出一条记录时系统给该记录设上“正在复核”的标志位,复核完毕时系统给记录设“复核完成”的标志位。操作员B在读取记录时系统只返回状态为“未复核”的记录。这样存在的问题是要起一个进程来定期清理长期处于“正在复核”状态的记录(如操作不当等原因引起),将它们改回“未复核”。
请问从数据库层面有没有什么机制可以解决这个问题呢?比如采用什么锁机制,当操作员A读出记录时操作员B就看不到,同时还能保证清理状态位。