SQL——回头看,原来“事务”在这里!!!

2年过后,实践+工作。层多次遇到和听到事务的概念。不经想起了,当初看的那本sql入门经典。再次翻看。收货巨多!今天来聊聊数据库的事务吧。
所谓不谋全局者不足谋一域,不谋万世者不足某一时。让咱先上一张导图吧。
这里写图片描述
好吧,是有点看不清的感觉。
下面是思维导图的简易版。

一:背景

  1. 解决数据更新带来的冲突问题。
  2. 事务四个特性

    持久性

    结束时,必须正确保存数据,不管出现什么特殊、意外情况
      断电、设备失效……
    不能只保存部分、不完整的数据
    durable
    

    * 隔离性*

    正在改变、改变被提交或被应用前的数据,应得到隔离:
      即:其他用户不可见
    事务完成,数据还在,那其他用户必须对其可见。
      解开隔离
    isolated
    

    一致性

    不覆盖之前的更新
    数据库处于确定的一致的状态
    consistent
    

    原子性

    要么全部完成,要么全部失败
    atomic
    

3什么时候不用?

  在新创建的表中的,且利用新的记录初始化改表的操作不需要事务

4什么时候用?

  数据库可能出现不确定状态
    更新丢失
    未确认
    前后读取数据不一致

二: 事务模型

1、 ANSI——sql
2、Transact——sql

三:思想

  • 1、使用关键字:

    ANSI—— sql

  • commit

  • rollback

       注意:使用了隐藏的commit,默认在第一个sql语句前加上的。
         目的,结束上一个事务操作,是数据库处于一致状态
    

    Transact——sql

  • begin transaction

  • savetransaction

  • committransaction

  • 2、将多条sql语句,封装为一个事务
    使其成为一个独立的执行单元要么全部完成,要么全部撤销
    作用: 阻止、允许其他用户看到 您在特殊环境所做的数据改变

四、 常见问题(并发)处理

  1. 更新丢失
  2. 未确认
  3. 前后数据读取不一致:不一致数据 && 幻影插入

五、 实现

**1、使用事务日志**
  原理
    记录操作前
    记录操作后
  存储
    和主数据库位于不同物理驱动器
  问题:
    性能问题
    资源开销
      内存
      磁盘
  好处
    回滚事务操作
    注意:每种dbms的实现各自不同
**2、使用锁**
  工作方式(原理)
    粒度
      库
      表
      页
      行
      列
    级别
      共享
      专有
      死锁
      降低锁的影响
    参数化
      粒度
      数目
      级别
      超时
    注意:一般的dbms,有自己的锁机制。通常不需要用户来干涉
  带来的问题
    死锁
      处理方法
        版本控制(Oracle)
        周期性检测死锁,并随机抽取事务,进行回滚
      原因
    性能
      原因
      处理方法
    限制了数据的并发操作
  作用:确保一致性
  本质:限制用户的操作
**3、使用隔离级别(某些dbms支持,并不是全部)**
  概念
    数据库用户
    用户的事务之间
    事务之间被允许的相互干涉程度
  四个级别
    serializable
      all
    repeatable read
      无法解决幻影插入
    read  committed
      前后数据读取不一致无法解决
    read uncommitted
      仅确保解决更新丢失

六:小结
实在是很恶心,关于csdn的markdone编辑器。巨难用!操作起来两边效果不能得到自己想要的东西。好吧。是时候,转移到github上去玩了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 26
    评论
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值