Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 应该使用readcommitted或Serializable作为隔离级别的场景?_Java_Oracle_Isolation Level - Fatal编程技术网

Java 应该使用readcommitted或Serializable作为隔离级别的场景?

Java 应该使用readcommitted或Serializable作为隔离级别的场景?,java,oracle,isolation-level,Java,Oracle,Isolation Level,我试图找出哪种隔离级别(在可序列化和已读提交的情况下)在什么情况下更好。在链接中,我通过主题选择隔离级别,根据文章中的一些陈述,我得到了一些清晰性和一些问题 sament:-读取提交隔离可以提供相当多的并发性,但由于某些事务的幻影和不可重复读取,导致结果不一致的风险有所增加 问题1:-读取提交隔离如何提供比可序列化更多的并发性?根据我的理解,可序列化事务也不会限制并发事务 语句:-Oracle可序列化事务中的所有查询都将数据库视为单个时间点 问题:-我想他们在这里的意思是,当可序列化事务在时间t

我试图找出哪种隔离级别(在可序列化和已读提交的情况下)在什么情况下更好。在链接中,我通过主题选择隔离级别,根据文章中的一些陈述,我得到了一些清晰性和一些问题

sament:-读取提交隔离可以提供相当多的并发性,但由于某些事务的幻影和不可重复读取,导致结果不一致的风险有所增加

问题1:-读取提交隔离如何提供比可序列化更多的并发性?根据我的理解,可序列化事务也不会限制并发事务

语句:-Oracle可序列化事务中的所有查询都将数据库视为单个时间点

问题:-我想他们在这里的意思是,当可序列化事务在时间t1开始时,所有数据都将从时间t1的数据库状态显示出来。对吗? 不确定我们何时调用事务实际开始是在我们获得连接时,还是在第一个查询被触发时?

语句:-Oracle的可序列化隔离适用于两个并发事务修改相同行的可能性相对较低且长期运行的事务主要为只读的环境

问题:-假设两个事务tran1和tran2在时间t1开始。如果tran1在时间t2更新行1,然后在时间t3更新行1,tran2将获取相同的行,tran2是否将更新的行由tran1完成?(我认为没有,因为tran2将获取时间t1时存在的数据状态。对吗?

语句:-编码可序列化事务需要应用程序开发人员进行额外的工作,以检查“无法序列化访问”错误,并撤消和重试事务

问题:-不确定开发人员何时会出现“无法序列化访问”错误我们是否会在下面的场景中得到相同的错误


假设两个事务tran1和tran2在时间t1开始。如果tran1在时间t2更新行1,然后在时间t3更新行1,则tran2更新相同的行1。在这种情况下,它会抛出“无法序列化访问”错误吗如果是,oracle是否在可序列化事务的情况下在内部维护该版本,以便了解用户已更新行?

如果要查看提交的数据,请选择“读取已提交”。每个查询可以看到不同的提交数据

如果要查看多个查询的相同结果,请选择serializable。在事务结束之前,将返回相同的结果

两者都有局限性。选择所需的隔离级别。不要选择一个超出您需要的隔离级别