Snapshot
以下是当前application flow
。
当user Logged
处于这些 multiple deployments
时,相应的SMSAgent(java class) insert user info in database
,SMSHelper
是java Scheduler
,它从数据库中读取数据在其本地队列send SMS
,然后update user status in database
。
现在,在上面的场景中, Multiple SMS is getting send to Single User
因为数据库很常见,并且通知帮助程序都从数据库中获取联系人详细信息(可能很常见)并向该用户发送短信。
目前,此问题的解决方案仅在oracle 11g中可用,其中select查询具有更新跳过锁定支持。
如何在应用程序级别而不是在查询级别上对所有数据库实现相同的目标?
答案 0 :(得分:0)
首先,你必须通过更新保留该行,然后选择。
假设你有200行,
首先你要做的是 RESERVE 一些值,这些值在实例中是唯一的,你也可以限制你的查询中没有更新的行,然后选择你的查询保留的行< / p>
UPDATE TABLE_NAME SET SERVER_INSTACE_ID = UNIQUE_VAL AND ROWNUM&lt; = RECORD_RESERVATION_LIMIT
SELECT * FROM TABLE_NAME WHERE SERVER_INSTANCE_ID = UNIQUE_VAL
通过这种方法,您无需在行或表上获取锁定。