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

并发事务会带来哪些问题?

齐涛
2023-03-14
本文向大家介绍并发事务会带来哪些问题?相关面试题,主要包含被问及并发事务会带来哪些问题?时的应答技巧和注意事项,需要的朋友参考一下

在典型的应用程序中,多个事务并发运行,经常会操作相同的数据来完成各自的任务(多个用户对同一数据进行操作)。并发虽然是必须的,但可能会导致以下的问题。

  • 脏读(Dirty read): 当一个事务正在访问数据并且对数据进行了修改,而这种修改还没有提交到数据库中,这时另外一个事务也访问了这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个事务读到的这个数据是“脏数据”,依据“脏数据”所做的操作可能是不正确的。
  • 丢失修改(Lost to modify): 指在一个事务读取一个数据时,另外一个事务也访问了该数据,那么在第一个事务中修改了这个数据后,第二个事务也修改了这个数据。这样第一个事务内的修改结果就被丢失,因此称为丢失修改。 例如:事务1读取某表中的数据A=20,事务2也读取A=20,事务1修改A=A-1,事务2也修改A=A-1,最终结果A=19,事务1的修改被丢失。
  • 不可重复读(Unrepeatableread): 指在一个事务内多次读同一数据。在这个事务还没有结束时,另一个事务也访问该数据。那么,在第一个事务中的两次读数据之间,由于第二个事务的修改导致第一个事务两次读取的数据可能不太一样。这就发生了在一个事务内两次读到的数据是不一样的情况,因此称为不可重复读。
  • 幻读(Phantom read): 幻读与不可重复读类似。它发生在一个事务(T1)读取了几行数据,接着另一个并发事务(T2)插入了一些数据时。在随后的查询中,第一个事务(T1)就会发现多了一些原本不存在的记录,就好像发生了幻觉一样,所以称为幻读。

不可重复读和幻读区别:

不可重复读的重点是修改比如多次读取一条记录发现其中某些列的值被修改,幻读的重点在于新增或者删除比如多次读取一条记录发现记录增多或减少了。

 类似资料:
  • 本文向大家介绍使用消息队列会带来哪些问题?相关面试题,主要包含被问及使用消息队列会带来哪些问题?时的应答技巧和注意事项,需要的朋友参考一下 系统复杂度提高,可用性降低,不仅需要考虑消息队列的可用性,还要考虑数据的一致性

  • 本文向大家介绍你觉得要是不用vuex的话会带来哪些问题?相关面试题,主要包含被问及你觉得要是不用vuex的话会带来哪些问题?时的应答技巧和注意事项,需要的朋友参考一下 1.传参数时对于多层嵌套的组件将会非常繁琐,对于兄弟组件更是无法传递 2.当不同视图的行为需要去修改数据时,无法追踪到数据的变更方向,导致无法维护代码

  • 如果客户端将JSSE.EnableSniExtension系统属性设置为false,那么它会暴露哪些安全风险? PS:我们试图通过HTTPS连接的所有URL。所以,会有证书验证。

  • 我正在实现一个JDBC数据库访问API(基本上是一个包装器),我正在使用来处理事务操作。看起来一切正常,但我无法理解jdbcTemplate如何管理并发事务。为了说明我的观点,我将在学生创造的基础上给你们一个简单的例子。让我们创建两个学生,约翰和杰克。第一个没有错误,第二个只有一个错误,下面是步骤和代码。 约翰开始交易 学生道 主控制程序 如何知道一个事务正常,而另一个事务不正常?据我所知,尽管我

  • 我想知道如何使用hyperledger Composer在hyperledger fabric中执行并发事务。当我试图针对同一资源同时提交两个事务时,会出现以下错误:

  • ChatGPT 的出现在许多领域都带来了各种机遇。以下是其中几个重要的机遇