SQL Server死锁

2022-09-21 00:00:00 事务 条件 隔离 死锁 级别

SQL Server死锁

  • 多个事务之间互相等待对方的资源,导致这些事务等待
  • 注意是等待,而非长事务

死锁的4个条件

  • 互斥条件(Mutual exclusion):资源不能被共享,只能由一个进程使用。
  • 请求与保持条件(Hold and wait):已经得到资源的进程可以再次申请新的资源。
  • 非剥夺条件(No pre-emption):已经分配的资源不能从相应的进程中被强制地剥夺。
  • 循环等待条件(Circular wait):系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。

事务隔离级别

  • READ UNCOMMITTED(SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED)
  • READ COMMITTED(SET TRANSACTION ISOLATION LEVEL READ COMMITTED)
  • REPEATABLE READ(SET TRANSACTION ISOLATION LEVEL REPEATABLE READ)
  • SERIALIZABLE(SET TRANSACTION ISOLATION LEVEL SERIALIZABLE)
  • SNAPSHOT(SET TRANSACTION ISOLATION LEVEL SNAPSHOT)

验证

  • 初始数据
  • 默认隔离等级下,更新事务对事务外SELECT语句的影响
    • 在sql server ssms中分别打开两个连接,分别模拟事务以及普通SELECT
    • 下面这个事务只有begin,没有COMMIT或者ROLLBACK,目的是模拟并发时多个session同时运行效果
    • 执行上面这个事务
    • 接着在另外一个session中分别查询下面这些select
    • 1

      相关文章