日期:2014-05-17  浏览次数:23242 次

高分寻 oracle 锁机制 并行插入表数据数量的控制方法?
要求原因:团购活动,很火爆,很多进程同时团购。如何在数据库级别加锁或触发器动态限制团购数量。
案例:c写的服务 4进程,同时取限制额度50,查询现有团购人数49,可同时插入数据库记录团购且记录成功。这时团购人数成53人。不符合要求。 
请问如何处理?本人觉得只能在oracle锁上加以处理,可以加上触发器限制,不知可行与否?请大侠指导

------解决方案--------------------
触发器限制可行,超出50则禁止插入即可。
------解决方案--------------------
一般这个都是再应用端进行控制的,

要加排他锁,就不会让其它SESSION做任何插入了
lock table in exclusive mode命令添加X锁
------解决方案--------------------
使用悲观锁,在判断之前先将表锁住,防止其它更新操作
------解决方案--------------------
这个建议在应用端处理,数据库做这个事情效率一般不如应用高,而且DB资源一般比较紧张,故不建议在数据量来做。
------解决方案--------------------
探讨
那具体怎么做,有实例么?

引用:

触发器限制可行,超出50则禁止插入即可。