• 数据库事务与锁


    1、事务基本概念

    *事务是一种操作数据库的序列,这些操作要么全做要么不做,是一个不可分割的工作单位。(事务可以包括一条sql 语句 也可以包括一批sql语句)
     
    2、事务的ACID特征
     
    *原子性

      操作要么全做,要么不做。

    *一致性

      多个变化必须一致同步。

    *隔离性

      事务不受其他事务干扰

    *持续性

      一旦提交改变数据是永久性的

    3、并发的危险

    *丢失更新

      两个事务对同一个资源进行读取更新。

    *脏读

      事务未提交,然后回滚。另外一个事务在读取。

    *不可重复读

      一个事务在读取,一个事务在更新

    *幻读

      一个事务在读取一定范围数据的时候,另外一个事务在插入或者删除。

    *重复读

      一个事务在查询某个范围内数据的时候另外一个事务更新相应的数据。查询多次

    *Sql server里面锁用来解决并发带来的危害
    *Sql server 监视锁用 sys.dm_tran_locks  和dm_os_wait_status  两个系统视图来查看
     
    死锁
    *T1 封锁资源R1 、R2    T2封锁资源 R2 、R1 相互争夺等待形成死锁
    *死锁不可怕

      1)、一次封锁法

      2)、有序封锁法

    •死锁解除

      1)、时间控制

      2)、等待图法

    锁分类

    *排它锁(写锁 X)
    *共享锁(读锁 S)
    *更新锁 (更新U)
    *架构锁 (架构修改锁 Sch-m 架构稳定锁 Sch-S)
    *意向锁(IX,IS , IU)

    显式锁=== 隐式锁

    资源

    库à表->页à行

    Database ->object->page->key

    锁的兼容性

    隔离级别

    *隔离级别可以理解为全局的设置资源锁
    *可序列化
    *可重复读

      SET TRANSACTION ISOLATION LEVEL REPEATABLE READ

    *已提交读

      SET TRANSACTION ISOLATION LEVEL READ COMMITTED

    *未提交读
    *快照
  • 相关阅读:
    java 模块调用
    JAVA 方法引用
    JAVA 接口中静态方法
    JAVA 反射获取class类对象
    JAVA 引用对象的实例方法
    JAVA Lambda表达式的使用
    JAVA 接口中默认方法
    JAVA中Function的使用
    JAVA TCP客户端读区文件,服务端写入文件
    JAVA 反射练习
  • 原文地址:https://www.cnblogs.com/echosong/p/3757853.html
Copyright © 2020-2023  润新知