• 事务的隔离性


    1、修改隔离级别

    Set session transaction isolation level read uncommitted;

    2、查看隔离级别

    Select @@tx_isolation

    3、事务的4种隔离级别

    (1)读未提交read uncommitted

    一个事务可以读到其他事务还没有提交的数据,会出现脏读。一个事务读到了另一个未提交事务修改过的数据,就是脏读。

    (2)读已提交read committed

    一个事务只能读到另一个已经提交的事务修改过的数据,并且其他事务对该数据进行一次修改并提交后,该事务能查询到最新的值,会出现不可重复读、幻读。

    如果一个事务先根据某些条件查询出一些记录,之后另一个事务又向表中插入了符合这些条件的记录,原先的事务再次按照该条件查询,能把另一个事务插入的记录也读出来,这就是幻读。

    (3)可重复读repeatable Read

    一个事务第一次读过某条记录后,即使其他事务修改了该记录的值并且提交,该事务之后再读该条记录时,读到的仍属第一次读到的值,而不是每次都读到不同的数据,这就是可重复读,这种隔离级别解决了不可重复,但还是会出现幻读。MySQL默认的隔离级别,其内部解决了幻读问题。

    (4)串行化serializable

    读未提交、读已提交、可重复读这几种隔离级别都允许对同一条记录进行读读、读写、写读的并发操作。如果不允许读写、写读的并发操作时,可以使用serializable隔离级别,这种隔离级别因为对同一条记录的操作都是串行的,所以不会出现脏读、幻读等现象。

    注意

    • Read uncommitted隔离级别:可能发生脏读、不可重复读、幻读问题。
    • Read committed隔离级别:可能发生不可重复读和幻读,但不会发生脏读问题。
    • Repeatable read隔离级别:可能发生幻读问题,不会发生脏读和不可重复读问题。
    • Serializable隔离级别:各种问题都不会发生。
    • 四种隔离级别是SQL的标准定义,不同的数据库有不同的实现,特别需要注意MySQL在repeatable read隔离级别下,是可以禁止幻读问题的发生的。
    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    CSS(22)CSS的长度单位
    CSS(21)CSS Grid网格布局
    CSS(20)CSS3 弹性盒子(Flex Box)
    CSS(19)CSS3 多列
    CSS(18)CSS3 过渡与动画
    CSS(17)CSS 2D、3D 转换
    CSS(16)CSS3 渐变(Gradients)
    CSS(15)CSS媒体查询Media Queries
    CSS(14)CSS 伪元素
    CSS(13)CSS 伪类(Pseudo-classes)
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14969749.html
Copyright © 2020-2023  润新知