美文网首页
事务并发产生的问题

事务并发产生的问题

作者: 晚安多巴胺 | 来源:发表于2017-12-05 14:53 被阅读0次

事务并发产生的问题:
脏读:一个事务读取到了另外一个事务没有提交的数据
事务1:更新一条数据
------------->事务2:读取事务1更新的记录
事务1:调用commit进行提交

        ***此时事务2读取到的数据是保存在数据库内存中的数据,称为脏读。
        ***读到的数据为脏数据
        详细解释:
            脏读就是指:当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,
            另外一个事务也访问这个数据,然后使用了这个数据。因为这个数据是还没有提交的数据,那么另外一个
            事务读到的这个数据是脏数据,依据脏数据所做的操作可能是不正确的。
        
    不可重复读:在同一事务中,两次读取同一数据,得到内容不同
        事务1:查询一条记录
                        -------------->事务2:更新事务1查询的记录
                        -------------->事务2:调用commit进行提交
        事务1:再次查询上次的记录
        
        ***此时事务1对同一数据查询了两次,可得到的内容不同,称为不可重复读
        
    幻读:同一事务中,用同样的操作读取两次,得到的记录数不相同
        事务1:查询表中所有记录
                          -------------->事务2:插入一条记录
                          -------------->事务2:调用commit进行提交
        事务1:再次查询表中所有记录
        
        ***此时事务1两次查询到的记录是不一样的,称为幻读
        详细解释:
            幻读是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,
            这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表
            中插入一行新数据。那么,以后就会发生操作第一个事务的用户发现表中还有没有修改的数据行,
            就好象发生了幻觉一样。





  1 脏读:修改时加排他锁,直到事务提交后才释放,读取时加共享锁,读取完释放事务1读取数据时加上共享锁后(这 样在事务1读取数据的过程中,其他事务就不会修改该数据),不允许任何事物操作该数据,只能读取,之后1如果有更新操作,那么会转换为排他锁,其他事务更 无权参与进来读写,这样就防止了脏读问题。
   但是当事务1读取数据过程中,有可能其他事务也读取了该数据,读取完毕后共享锁释放,此时事务1修改数据,修改 完毕提交事务,其他事务再次读取数据时候发现数据不一致,就会出现不可重复读问题,所以这样不能够避免不可重复读问题。
  2 不可重复读:读取数据时加共享锁,写数据时加排他锁,都是事务提交才释放锁。读取时候不允许其他事物修改该数据,不管数据在事务过程中读取多少次,数据都是一致的,避免了不可重复读问题
  3 幻读问题:采用的是范围锁RangeS RangeS_S模式,锁定检索范围为只读,这样就避免了幻影读问题

相关文章

  • 事务并发产生的问题

    事务并发产生的问题:脏读:一个事务读取到了另外一个事务没有提交的数据事务1:更新一条数据-------------...

  • 事务的并发?事务隔离级别,每个级别会引发什么问题,MySQL默认

    从理论上来说, 事务应该彼此完全隔离, 以避免并发事务所导致的问题,然而, 那样会对性能产生极大的影响, 因为事务...

  • MySQL-MVCC

    问题 多事务同时访问数据库中的相同数据时 读 + 读:多个事务对相同数据全部是读操作时,不会产生任何并发问题 读 ...

  • Maridb中的事务

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

  • Hibernate之事务管理

    一、事务并发问题 数据库没有做任何并发处理的情况下有5类事务并发问题 A:第一类丢失更新:两个事务更新相同数据,如...

  • 2019-01-18

    1.MySQL事务隔离级别:事务隔离级别,解决什么并发问题,以及存在什么并发问题 (1)READ_UNCOMMIT...

  • 事务并发

    事务并发产生的四个问题 更新丢失 当两个或多个事务选择同一行,然后基于最初选定的值更新该行时,由于每个事务都不知道...

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

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

  • 从0到1理解数据库事务(下):隔离级别实现——MVCC与锁

    这是数据库事务分享的第二篇,上一篇讲解数据库事务并发会产生的问题,这篇会详细讲数据库如何避免这些问题,也就是如何实...

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

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

网友评论

      本文标题:事务并发产生的问题

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