这个视频使用下面的脚本成功地模拟了 SQL Server 的死锁。死锁发生在两个事务在拿到了对方需要的锁的以后,又申请对方已经拿到的锁的条件下。死锁虽然不会造成阻塞 (blocking) 但是会造成 SQL Server 性能下降,因为侦测和解除死锁需要消耗额外的资源,所以在面试数据库相关的职位时会经常被问到。

视频链接: https://live.csdn.net/v/142521

模拟步骤:

  1. 运行建立 SampleTable 表的脚本
  2. 运行 Transaction A 中 ID=2 的 Update 脚本
  3. 运行 Transaction B 中 ID=3 的 Update 脚本
  4. 运行 Transaction A 中 ID=3 的 Update 脚本并且 commit
  5. 运行 Transaction B 中 ID=2 的 Update 脚本并且 commit

Transaction A

SELECT @@SPIDIF EXISTS (SELECT 1 FROM sys.tables WHERE name = 'SampleTable')DROP TABLE SampleTableCREATE TABLE [SampleTable]
([Id]          [int] IDENTITY(1,1) NOT NULL,[Name]        [varchar](100) NULL,[Value]       [varchar](100) NULL,[DateChanged] [datetime] DEFAULT(GETDATE()) NULL,CONSTRAINT [PK_SampleTable] PRIMARY KEY CLUSTERED ([Id] ASC)
)INSERT INTO SampleTable(Name, Value)
SELECT 'Name1', 'Value1'
UNION ALL
SELECT 'Name2', 'Value2'
UNION ALL
SELECT 'Name3', 'Value3'SELECT * FROM SampleTableBEGIN TRAN   UPDATE SampleTable SET Name = Name + Name WHERE ID = 2UPDATE SampleTable SET Name = Name + Name WHERE ID = 3--DELETE FROM SampleTable WHERE ID = 4
COMMIT TRAN

Transaction B

SELECT @@SPIDBEGIN TRANUPDATE SampleTable SET Name = Name + Name WHERE ID = 3UPDATE SampleTable SET Name = Name + Name WHERE ID = 2COMMIT TRAN

面试问题:如何模拟SQL Server死锁 (附视频和脚本)相关推荐

  1. sql活动监视器 死锁_使用system_health扩展事件监视SQL Server死锁

    sql活动监视器 死锁 Performance monitoring is a must to do the task for a DBA. You should ensure that the da ...

  2. sql server死锁_如何使用扩展事件和SQL Server代理自动执行SQL Server死锁收集过程

    sql server死锁 介绍 (Introduction) This article is the last one of a series in which we discussed how to ...

  3. sql server死锁_如何解决SQL Server中的死锁

    sql server死锁 In this article, we will talk about the deadlocks in SQL Server, and then we will analy ...

  4. sql server死锁_如何报告SQL Server死锁事件

    sql server死锁 介绍 (Introduction) In the previous article entitled "What are SQL Server deadlocks ...

  5. sql server死锁_了解SQL Server中的死锁定义

    sql server死锁 This article explains the deadlock definition in SQL Server, and it also mentions how t ...

  6. SQL Server 死锁的告警监控

    原文:SQL Server 死锁的告警监控 今天这篇文章总结一下如何监控SQL Server的死锁,其实以前写过MS SQL 监控错误日志的告警信息,这篇文章着重介绍如何监控数据库的死锁,当然这篇文章 ...

  7. php sql 时间 函数,PHP模拟SQL Server的两个日期处理函数

    PHP模拟SQL Server的两个日期处理函数 2021-01-21 17:04:27149 //在PHP中处理日期非常不方便,比如求两个日期之间相差的月份?该怎么办呢? //文件名:date.in ...

  8. sql server死锁_SQL Server死锁定义和概述

    sql server死锁 介绍 (Introduction) In this series, I will provide all of the information you need to und ...

  9. sql活动监视器 死锁_监视SQL Server死锁–简单方法

    sql活动监视器 死锁 SQL Server is a very powerful tool and wherever I go, I see the tool being way much unde ...

最新文章

  1. 修改值类型的实例方法 mutating
  2. 提权函数之RtlAdjustPrivilege()
  3. 我的Java开发之路
  4. VisualSVN Server以及TortoiseSVN客户端的配置和使用方法
  5. 30个图片浏览插件收集
  6. 17电大计算机网考模拟题,2017年电大 201717统考电大计算机应用基础网考试题.doc...
  7. amber 口译_口译员设计模式示例
  8. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 21丨报告系统状态的连续日期【难度困难】​
  9. CVPR 2021 | 商汤提出最强时序动作提名修正网络:TCANet
  10. java线上诊断工具,Java线上诊断神器Arthas-1
  11. jquery SELECT 操作
  12. vivado修改下载器下载速率
  13. 内存为程序分配空间的四种分配方式
  14. 工业以太网交换机特点分析及使用注意事项
  15. 人类捕杀动物,吃动物就残忍了吗?
  16. database rough 1
  17. 主流的企业级报表工具,国内报表工具排名前列
  18. 计算机系统概述学后感,计算机操作系统学习心得体会总结(2)
  19. java货郎担问题求解_货郎担问题的四种实现方法
  20. 最受HR欢迎的简历五大特征

热门文章

  1. 为何要选择即时小程序代理平台?有哪些优势?
  2. 计算机专业可以考什么证书?
  3. 指尖江湖李忘生鸿蒙初开,剑网3指尖江湖李忘生PVP秘籍搭配方法
  4. Spring源码之ResourceLoader(二):PathMatchingResourcePatternResolver实现getResources加载多文件
  5. 还在让WiFi被人蹭网?学会这四招,没人蹭的WiFi网速至少快三倍
  6. 企业邮箱的重要性及作用
  7. 一文吃透何为微服务、网关、服务发现/注册
  8. ORM v4.1.29.1,全程傻瓜式操作的系统备份还原工具
  9. makefile 中 wildcard、notdir、patsubst、addprefix 解释
  10. iOS 一个类似QQ的图片添加、图片浏览Demo