• 理解MySQL(二)--数据库事务


    1、事务:事务内的语句,要么全部执行成功,要么全部执行失败。

    a)      数据库事务四要素:ACID,原子性,一致性,隔离性,持久性。

    b)      原子性:一个事务必须被视为不可分割的最小单元。

    c)      一致性:数据库是从一个一致性状态转换到另外一个一致性状态。

    d)      隔离性:一个事务所做的修改在最终提交前,对其他事务是不可见的。

    e)    持久性:一旦事务提交,其所做的修改就会被永久保存到数据库

    2、 隔离级别:规定了一个事务所做的修改,,哪些在事务内和事务间是可见的,哪些是不可见的。较低级别的隔离可以执行更高的并发,系统的开销也更小。

    a)      READ UNCOMMITED(未提交读):在该级别中,事务的修改,即使没有提交,对其他事务也是可见的事务可以读取未提交的数据,称为脏读。实际很少使用未提交读。

    b)      READ COMMITED(提交读):一个事务从开始直到提交之前,所做的任何修改对其他事务都是不可见的。因为这个级别执行两次查询,可能会得到不同的结果,所以也被称为不可重复读

    c)      PEREATABLE READ(可重复读):保证了在同一事务中多次读取同样记录的结果是一样的。但是该级别还无法解决幻读的问题。幻读,指的是当某个事务在读取某个范围的记录时,另外一个事务又在该范围插入了新的记录,当之前的事务再次读取该范围的记录时,会产生幻行,也就是读取的记录数不同。可重复读是MySQL的默认事务隔离级别

    d)      SERIALIZABLE(可串行化):最高的隔离级别,通过强制事务串行执行,避免了前面说的幻读的问题。简单来说,SERIALIZABLE会在读取的每一行数据上加锁,所以可能导致大量超时和锁争用问题。

    隔离级别

    脏读可能性

    不可重复读可能性

    幻读可能性

    加锁读

    READ UNCOMMITED

    Yes

    Yes

    Yes

    No

    READ COMMITED

    No

    Yes

    Yes

    No

    PEREATABLE READ

    No

    No

    Yes

    No

    SERIALIZABLE

    No

    No

    No

    Yes

     

    3、死锁:指的是两个或者多个事务在同一资源上相互占用,并请求锁定对方占用的资源,从而导致恶性循环的现象。Innodb处理死锁的方式是将持有最少行级排他锁的事务进行回滚。

    4、MySQL中的事务,可以通过实行SET TRANSACTION ISLATION LEVEL命令来设置隔离级别。

     

    更新于2019.7.18

  • 相关阅读:
    配置java环境变量
    编写Java中的第一个Java程序:HelloWorld(你好世界:问世)
    对Java的加载与执行的理解(理论比较重要)
    JDK、JRE、JVM三者之间的关系?
    Java语言的特性
    计算机编程语言发展史
    DRF解析器
    DRF分页组件
    DRF频率组件
    DRF权限组件
  • 原文地址:https://www.cnblogs.com/bjm1/p/11206019.html
Copyright © 2020-2023  润新知