美文网首页
数据库事务与并发

数据库事务与并发

作者: 马桶上的思考者 | 来源:发表于2016-04-15 14:50 被阅读26次

多个事务同时执行时带来的问题

1. 更新丢失

複数のトランザクションが同じ行を選択し、その行の元の値を更新すると発生する。
トランザクションは互いに相手を意識することがないので、
ある更新処理による更新データが確定される前に、他の更新処理により変更されてしまうと、
前者のトランザクションで更新したデータが失われてしまうことになる。

当两个事务读取同一个行,其中一个事物导致该行的数据更新的时候发生
在一个事务更新数据还未提交,另外一个事务对该行数据进行更新并提交后,将会导致先提交的事务所做的更新丢失。

2. 脏读

別のトランザクションにより更新されたが、まだコミットされていないデータを読んでしまえる。
後者のトランザクションが読み取るデータは、まだコミットされていないので、
行を更新中のトランザクションによって変更される可能性がある。
これはトランザクション処理における機能の条件である「ACID特性」のうち
「C」の文字で表されている「一貫性」(Consistency)と矛盾する。
ダーティーリードを禁止することは比較的容易に実現できるが、
多くの場合、禁止を実行するとオーバーヘッドを生じさせてしまうことになり、
アプリケーションの実行速度を低下させてしまう。同様に、システムの平行性を低下させてしまうことも多い。

读取到被别的事务更新但没有提交的数据。
因为读到的是别的事务还没有提交的数据,所有有被的事务更新的可能性。这和关于事务处理机能所诉的[ACID]特性的[C],也就是[一贯性(Consistency)相矛盾。虽然禁止脏读很容易实现,但大多数场合下,禁止脏读会产生额外的开销,导致应用的执行速度降低。同样的,也常会导致系统并行性降低。

3. 反复读取不一致

トランザクション中に、繰り返し同じデータを参照するとき、そのつど値が変わってしまう状態。
同一トランザクション内で、同じSELECT文が実行された場合に、同じ照会結果が保証されないことを言う。
反復不能読み取りは、トランザクションがデータを変更中に別のトランザクションがそのデータを読み取るという点で
ダーティリードと似ている。ただし反復不能読み取りの場合、別のトランザクションが読み取るデータは
変更を行ったトランザクションによってコミットされている。また、同じ行が複数回読み取られ、
そのたびにトランザクションによって情報が変更される。そのため、反復不能読み取りと呼ばれる。

在事务中,反复读取同一数据的时候,在每次读取的时候值发生变化。
在同一个事务中,同一个SELECT语句执行的场合,不能保证查询结果都是一样的。
不能反复读取,关于在事务中数据被修改过程中被别的事务读取的点来说,和脏读很像。但是不能反复读的情况下,别的事务读取的时当前事务所提交的数据,别的事务针对同一数据被多次读取的情况,在每次读取数据时会应为当前事务的提交而发生变化,因此被称作不能反复读取。

4. 幻读

トランザクション中に、突然現れたり消えたりしてしまうデータができてしまう。
その様子から、この現象はファントムと呼ばれる。
同一トランザクション内で、同じSELECT文を実行した場合に、
別のトランザクションで削除が行われた場合、2回目以降の読み取りにおいて、
最初の読み取りで得られた行のデータが得られなくなったり、
別のトランザクションで挿入が行われた場合、2回目以降の読み取りにおいて、
最初の読み取りで得られなかった行のデータが読み取られてしまう。

在一个事务中,突然出现或消失数据的现象被称作幻读。
同一个事务中,最初读取到的数据被别的事务删除,在第2次用相同的SELECT语句却读取不到。或者说最初没有读取到的数据,因为别的事务的插入操作导致第2次却读取到。

相关文章

  • 事务的隔离、传播、回滚

    springboot之事务的隔离与传播 事务的隔离 多个事务是并发的访问数据库,并发是必须的但会带来几个问题: 脏...

  • Hibernate事务与并发问题处理(乐观锁与悲观锁)----

    目录 一、数据库事务的定义 二、数据库事务并发可能带来的问题 三、数据库事务隔离级别 四、使用Hibernate设...

  • 数据库事务--事务隔离级别

    数据库里关于事务的并发问题,也叫做竞态条件(race condition)。它是描述并发事务中,一个事务需要读取另...

  • JAVA面试习题梳理-P1

    递归 方法的参数传递机制 成员变量与局部变量 数据库事务并发问题 事务Transaction01读取了STUDEN...

  • 数据库事务和锁

    数据库的事务什么是数据库的事务?数据库事务(transaction)是访问并发可能操作各种数据项的一个数据库操作序...

  • 数据库事务与并发

    多个事务同时执行时带来的问题 1. 更新丢失 複数のトランザクションが同じ行を選択し、その行の元の値を更新すると発...

  • Spring深入 3.事务底层原理分析

    一、数据库的事务的基本特性 事务是区分文件存储系统与Nosql数据库重要特性之一,其存在的意义是为了保证即使在并发...

  • Maridb中的事务

    今天对mariadb事务并发的五类问题,进行了测试,结果得到以下的结论 事务并发5类问题(如果数据库没有做任何并发...

  • 一篇讲透如何理解数据库并发控制

    01数据库并发控制的作用 1.1 事务的概念 在介绍并发控制前,首先需要了解事务。数据库提供了增删改查等几种基础操...

  • SQLite数据库--事务

    事务是并发控制的基本单元 数据库事务具有ACID特性: A:Atomic原子性数据库事务是不可分割的工作单位,事务...

网友评论

      本文标题:数据库事务与并发

      本文链接:https://www.haomeiwen.com/subject/agdnlttx.html