• 事务与并发控制


    所谓事务是用户定义的一个数据操作序列,这些操作可作为一个完整的工作单元,要么全部执行,要么全部不执行,是一个不可分割的工作单位.

    事务中的操作一般是对数据的更新操作,包括增,删,改.

    事务的特征:原子性(Atomicity),一致性(Consistency),隔离性(Isolation),持续性(Durability)    ACID

    并发操作问题

    丢失更新:事务T1,T2同时读入同一数据并加以修改,T2的提交结果会破坏T1提交的结果.

    不可重复读:事务T1读取数据后,事务T2执行更新操作,使T2无法再现前一次读取结果.

    读"脏"数据: 事务T1修改数据后撤销,使得T2读取的数据与数据库中不一致.

    封锁是最常用的并发控制技术.

    基本思想:需要时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期改变.

    锁:一个锁实质上就是允许或阻止一个事务对一个数据对象的存取特权.

    基本的锁类型: 1)排他锁(X锁),用于写操作. 2)共享锁(S锁),用于读操作

    封锁的工作原理:

    1)若事务T对数据D加了X锁,则所有别的事务对数据D的锁请求都必须等待直到事务T释放锁.

    2)若事务T对数据D加了S锁,则别的事务还可对数据D请求S锁,而对数据D的X锁请求必须等待直到事务T释放锁.

    3)事务执行数据库操作时都要先请求相应的锁,即对读请求S锁,对更新请求X锁.这个过程一般是由DBMS在执行操作时自动隐含地进行.

    4)事务一直占有获得的锁直到结束时释放.

    封锁的粒度: 通常用粒度来描述封锁的数据单元的大小,DBMS可以决定不同粒度的锁.粒度越细,并发性越大,但软件复杂性和系统开销也就越大.

    封锁的级别:封锁的级别又称为一致性级别或隔离度.

    0级封锁: 不重写其他非0级封锁事务的未提交的更新数据(实用价值低).

    1级封锁: 不允许重写未提交的更新数据.防止了丢失更新的发生.

    2级封锁: 既不重写也不读未提交的更新数据(防止了读脏数据).

    3级封锁: 不读未提交的更新数据,不写任何(包括读操作)未提交数据.   //不代表完全封锁

    死锁和活锁: 活锁-先来先服务  死锁-预防 1)一次性锁请求 2)锁请求排序 3)序列化处理 4)资源剥夺

    可串行性: 一组事务的一个调度就是它们的基本操作的一种排序.

    在数据库系统中,可串行性就是并发执行的正确性准则,即当且当一组事务的并发执行调度是可串行化的,才认为它们是正确的.

    两段封锁法(Two-Phase Locking,2PL)

    1)发展(Growing)或加锁阶段 2)收缩(Shrinking)或释放锁阶段

  • 相关阅读:
    怎么判断是从微信浏览器打开还是手机自带的浏览器(其他浏览器)打开?
    h5移动端页面强制横屏
    苹果的正常显示,安卓的不知道写了什么白屏了
    截取地址栏的最后一个参数
    检测手机号码的正则表达式
    js判断是不是在微信浏览器打开?
    LArea插件选中城市,确定之后又很难再次选择城市?
    display: inline-block 布局
    调试
    时间
  • 原文地址:https://www.cnblogs.com/lsxsx/p/13406419.html
Copyright © 2020-2023  润新知