当前位置: 首页 > 面试题库 >

不可重复读与脏读之间的区别

刁星渊
2023-03-14
问题内容

从这个甲骨文的Java教程:

当事务A检索行,事务B随后更新该行,事务A随后再次检索同一行时,将发生不可重复的读取。事务A两次检索同一行,但看到不同的数据。

脏读和不可重复读之间有什么区别?是不是同一回事?由于其他人的更新而阅读错误的结果?

提前致谢。


问题答案:

完全相同的页面解释了什么是脏读:

访问尚未提交的更新值被视为脏读,因为该值可能会回滚到其先前的值。如果读取的值稍后会回滚,则您将读取无效的值。

因此,不可重复读包含读取两个不同的提交值,而脏读包含读取尚未提交的值。很不一样。



 类似资料:
  • 我目前正在阅读《高性能MySQL,第二版》,试图理解MySQL中的事务隔离。 下面是他们对这两个事务隔离级别的解释。 阅读提交 大多数数据库系统(但不是MySQL!)的默认隔离级别是READ COMMITTED。它满足了之前使用的隔离的简单定义:事务将只看到在开始时已经提交的事务所做的更改,并且在它提交之前,它的更改不会对其他人可见。这个级别仍然允许所谓的不可重复读取。这意味着您可以运行相同的语句

  • 不可重复读取和幻像读取有什么区别? 我已经阅读了维基百科上的隔离(数据库系统)文章,但我有一些疑问。在下面的示例中,会发生什么:不可重复读取和幻像读取? ####交易A # # # #输出: ####交易B ####交易A 另一个疑问是,在上面的例子中,应该使用哪个隔离级别?为什么?

  • 根据 SQL 标准,可重复读取应防止模糊读取和脏读,而可序列化还应防止幻像读取。 根据MySQL文档: 默认情况下,InnoDB以可重复读取事务隔离级别运行。在这种情况下,InnoDB使用下一键锁进行搜索和索引扫描,这可以防止幻像行(参见14.2.2.5的“使用下一键锁避免幻像问题”一节)。 那么,如果可重复读取也可以防止幻像读取,那么序列化可以提供什么回报呢? Serializable是否可以防

  • 问题内容: 我有一对SQL Server 2014数据库设置为同步AlwaysOn可用性组。 两台服务器均设置为可用性模式,会话超时为50秒。次级被设置为可读的次级。 如果我写入主数据,然后立即(通过)从辅助数据中读取,则我将始终读取脏数据(即写入之前的状态)。如果我在写入和读取之间等待大约一秒钟,我将获得正确的数据。 这是预期的行为吗?如果是这样,我可以做些什么来确保从辅助读取是最新的? 我想将

  • 问题内容: 这两个命令之间在时间执行方面有区别: 谢谢您的帮助 问题答案: 我认为您不会注意到这种差异。 这是两个函数的源代码: 和 注意:我故意切断了文档字符串…

  • 问题内容: 可能重复: JavaScript中的“(function(){})()”和“(function(){}())”在功能上是否相等? 这是我还没有弄清楚的事情,但是我一直在使用function(){}()只是因为如果添加括号,我的VIM语法高亮显示就搞砸了,尽管我已经看到了(function(){})()大约很多次,也许是IE的事情? 编辑: 问题答案: 基本上,括号是一种约定,用于表示紧