SQL Server死锁
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
相关文章