项目背景:
一个重要的项目,一个复杂的背景,每天大量人员频繁的操作,在过去的几个月内偶尔发生一两次死锁导致系统不能使用
为缓解查询压力,实现了读写分离,已经增加了3台查询数据库与主数据库同步
死锁解决办法:
1.首先创建表:
CREATE TABLE [dbo].[DeadLock](
[ID] [int],
[标志] [varchar](10),
[进程ID] [smallint],
[线程ID] [smallint],
[块进程ID] [smallint],
[数据库ID] [smallint],
[数据库名] [varchar](50),
[用户ID] [varchar](128),
[用户名] [varchar](100),
[累计CPU时间] [int],
[登陆时间] [datetime],
[打开事务数] [varchar](30),
[进程状态] [varchar](128),
[工作站名] [varchar](128),
[应用程序名] [varchar](120),
[工作站进程ID] [varchar](228),
[域名 ] [nchar](12),
[网卡地址] [varchar](120),
[进程的sql语句] [varchar](3000),
[发生时间] [datetime]
)
这个表是根据下面的存储过程结果创建的,不要问我创建过程,反正我调了好几次才成功
2.创建下面的存储过程:
create proc p_lockinfo
@kill_lock_spid bit=1, --是否杀掉死锁的进程,1 杀掉, 0 仅显示
@show_spid_if_nolock bit=0 --如果没有死锁的进程,是否显示正常