初级问题:隔离级别.希望大家解惑!谢谢
oracle提供两种隔离级别:read commited和serializable。
当设置为serializable时,可能会出现错误:ORA-08177: Cannot serialize access for this transaction。
怎么避免这样的错误?
我感觉应该从业务层面来考虑:
(1)是否存在多个事务中对同一行数据进行修改的需求。
感觉有这样需求是正常的。
(2)如果存在这样的需求,只能选择read commited的隔离级别。(是只能吗?)
使用read commited级别,不会出现ORA-08177错误,但可能会出现非重复读或幻象的情况。
那是不是应该好好组织事务内sql语句顺序,对同一个表在事务内只查询一次,并把查询结果作为中间变量保存,以此来解决非重复读或幻象问题。
上面是我粗浅的想法,不知道对不对,或者还有别的解决方法,请大家不吝赐教! 谢谢~~
|