美文网首页
坚持打卡学习第十一天——事务处理

坚持打卡学习第十一天——事务处理

作者: 去追星星 | 来源:发表于2021-12-26 18:28 被阅读0次

    事务

    一般来说,事务必须满足ACID:
    (1)A:原子性,或称不可分割性;一个事务所有操作要么全完成,要么全不完成。事务执行过程发生错误,就会回滚到事务开始前的状态
    (2)C:一致性;事务开始以及结束后,数据库完整性没被破坏(写入的数据,须符合预设的规则)
    (3)I:隔离性;数据库允许多个并发事务同时操作数据,隔离性可防止多个并发事务导致的数据不一致。隔离级别分为:读未提交、不可重复读、可重复读、串行化
    (4)D:持久性;事务结束后,对数据的修改是永久的

    1、事务控制语言

    (1)begin或start transaction显示开始一个事务
    (2)commit或commit work提交修改
    (3)rollback或rollback work回滚结束事务,撤销所有未提交事务

    2、事务处理的两种方式

    (1)用begin(开始)、rollback(回滚)、commit(提交确认)来实现
    (2)用set改变自动提交:

    • set autocommit=0禁止自动提交
    • set autocommit=0开启自动提交
    3、事务隔离级别
    事务隔离级别 脏读 不可重复读 幻读
    读未提交(read uncommitted)
    读已提交(read committed)
    可重复读(repeatable read)
    串行化(serializable)

    注:

    • 查看事务隔离级别:
    select @@transaction_isolation;
    
    • 设置事务隔离级别:
    set session transaction isolation level 设置事务隔离级别;
    

    (1)读未提交
    所以事务都可以看到其他未提交事务的执行结果,读取未提交的数据也称之为脏读,实际基本不用
    (2)读已提交
    大多数数据库默认隔离级别,一个事务只能看见已经提交事务所做的改变
    (3)可重复读
    mysql默认隔离级别,确保同一事物多个实例并发读取数据时,看到同样的数据行
    (4)串行化
    最高隔离级别,在每个读的数据行加上共享锁,消耗太大

    相关文章

      网友评论

          本文标题:坚持打卡学习第十一天——事务处理

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