日期:2014-05-16  浏览次数:20903 次

关于同时更新同一条记录的问题
多个服务器对同一数据库的同一个表的同一条记录的同一个字段进行更新,会产生锁表吗?
就是oracle在更新某一条记录的时候,会先锁定这条记录再更新,如果2个update完全同时执行锁记录,有问题吗?

------最佳解决方案--------------------
锁一定是串行的,一定是其中一个先获得锁,后一个等待前一个释放后再获得锁,不可能两个锁同时锁定,你多虑了。


------其他解决方案--------------------
update会加锁,如果是两个session同时update,某个session会获得锁,并且在提交(commit)之前都会保持锁定,另一个session的update就会等待,直到第一个session提交。
------其他解决方案--------------------
引用:
多个服务器对同一数据库的同一个表的同一条记录的同一个字段进行更新,会产生锁表吗?
就是oracle在更新某一条记录的时候,会先锁定这条记录再更新,如果2个update完全同时执行锁记录,有问题吗?

你的问题涉及到oracle行级锁的问题
严格讲oracle的行级锁不是锁定机制
也就是有锁的功能、却没有锁的开销
所以你的这句话“会先锁定这条记录再更新,如果2个update完全同时执行锁记录”提问时有问题的
两个事务同时update一行,也只是在行头上放上一个标志,他们会互相阻塞他人的也是TX锁,而不是什么莫名其妙的行级锁
因为根本不存在行级锁
------其他解决方案--------------------
引用:
锁一定是串行的,一定是其中一个先获得锁,后一个等待前一个释放后再获得锁,不可能两个锁同时锁定,你多虑了。