我对REPEATABLE READ事务隔离级别的理解是,一旦设置了它,事务中读取的数据就不会改变。sql.TxOptions{Isolation: sql.LevelSerializable}) // do query on tx
当进程处于休眠状态时,我已经通过控制台插入了另一条记录。但是,新插入的记录已经出现在结果中。为什么是这样?我不想读取在事务开始后插入的记录。
考虑到Oracle内部使用的并发系统(使用事务日志在某个时间点确定数据库的状态),我理解使用SERIALIZABLE事务并不会降低数据库的可用性。一个考虑因素是,必须为撤销段分配足够的空间,以便允许数据库存储足够的历史记录,以适应支持事务级而不是语句级读取一致性所需的隐含额外时间。例如,是否有任何额外的成本需要追溯到撤消数据中以返回记录?最后,正如我所说的只读事务一样,假设ORA-08177: Cannot serialize access for this trans