事务

事务

  1. 概念:作为单个逻辑工作单元来执行一系列SQL语句
  2. 主要作用:确保数据库的完整性

事务的4大特性

  1. 原子性(Atomicity):要么全做,要么不做

  2. 一致性(Consistency):跟业务流程保持一致,总量保持不变

  3. 隔离性(Isolation):事务与别的业务彼此保持独立

  4. 持久性(Durability):持久化操作

    MVC架构

  5. MySQL:自动提交commit

    Oracle:手动提交 不只是commit

  6. 开始事务:第一条SQL语句

  7. 事务的过程:DML

  8. 事务结束:提交结束

    (1)显示提交:commit DML

    (2)隐式提交(自动提交):

    ​ a.正常退出exit(ctrl+c)

    ​ b.DCL语句

    ​ c.DDL语句

    (3)回滚

    ​ a.显示回滚 rollback

    ​ b.隐式回滚 异常退出

    commit

    在这里插入图片描述

    在这里插入图片描述

事务的生命周期

  1. 在这里插入图片描述

事务的保存(Savepoint)

  1. 类似: 游戏 关卡

  2. 事务-保存点(Savepoint)

    用于回滚时,如果想要撤回刚刚的操作,可以在这些操作之前设置一个保存点,在需要撤回时使用rollback进行回滚

  3. 语法:

    (1)savepoint 保存点名称

    (2)rollback to savepoint 回滚到保存点位置

  4. 打开mytab表

    在这里插入图片描述

  5. 插入一条数据:

    在这里插入图片描述

  6. 创建保存点

    在这里插入图片描述

  7. 在插入一条数据

    在这里插入图片描述

  8. 回滚到保存点

    在这里插入图片描述

  9. 全部回滚

    在这里插入图片描述

事务的隔离级别

  1. 多个事务(客户端)产生的问题

  2. 脏读:

    事务1(客户端1)正在修改数据,没有提交commit,此时事务2(客户端2)也访问此数据,获取到的过时数据,就是脏读数据

  3. 不可重复读(针对列):

    在一个事务中多次查询得出的数据不同,即别的事务已经修改了数据

    即事务2拿到了事务1修改后并提交后的数据

    在这里插入图片描述

    在这里插入图片描述

  4. 幻读(针对表):

    一个事务中使用相同条件的查询语句多次查询其结果不同

    还有一种情况:两个事务都是修改了数据

    隔离级别

  5. 注:高并发、多线程 本身就与事务隔离相矛盾

  6. MySQL:四种隔离级别都有

    Oracle:只有Serializable|Read Committed;

    set transaction isolation level Serializable|Read Committed;

    set transaction read only ; //只读级别

    注:设置隔离级别时要再事务的SQL语句之前设置

    很少使用:只读Read Committed ,Serializable

    经常使用:Read Committed

  7. 事务的隔离级别在这里插入图片描述

  8. 设置隔离级别:

    (1)set transaction isolation level Serializable|Read Committed;

    (2)set transaction read only ; **//**只读级别

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值