SQL SERVER 阻塞与死锁.ppt

上传人:牧羊曲112 文档编号:5449362 上传时间:2023-07-08 格式:PPT 页数:19 大小:858KB
返回 下载 相关 举报
SQL SERVER 阻塞与死锁.ppt_第1页
第1页 / 共19页
SQL SERVER 阻塞与死锁.ppt_第2页
第2页 / 共19页
SQL SERVER 阻塞与死锁.ppt_第3页
第3页 / 共19页
SQL SERVER 阻塞与死锁.ppt_第4页
第4页 / 共19页
SQL SERVER 阻塞与死锁.ppt_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《SQL SERVER 阻塞与死锁.ppt》由会员分享,可在线阅读,更多相关《SQL SERVER 阻塞与死锁.ppt(19页珍藏版)》请在三一办公上搜索。

1、SQL Server 2008新特征,阻塞与死锁,DBA,内容,DBA,事务,事务:单个工作单元执行的一些列操作。事务的属性:A:原子性(Atomicity)全做或全不做C:一致性(Consistency)多个事务对data访问间不冲突I:隔离性(Isolation)用锁进行隔离D:持久性(Durability)运行模式:自动提交事务:每个语句一个事务显示事务BEGIN TRANCOMMIT TRANROLLBACK TRAN隐示事务,DBA,并发,并发:多用户同时对一种资源进行访问并发影响:并发控制:A的修改不会对B做的修改产生负面影响悲观并发控制:加锁成本 rollback隔离级别,DBA

2、,隔离级别,定义一个事务必须与其他事务所进行的资源或数据更改相隔离的程度隔离级别,DBA,锁定(locking),概念:(LOCK)事务获取的一种控制资源,保护数据,防止其他事务对数据进行冲突的或不兼容的访问。可锁定资源锁模式锁兼容性自定义锁定锁升级:细粒度的锁升级为粗粒度的锁,SQL Server2008 可以用LOCK_ESCALATION显示禁止锁升级。,DBA,可锁定资源,DBA,锁模式(lock mode),DBA,锁兼容性,控制多个事务能否同时获取一个资源上的锁。兼容时才能获得。,DBA,阻塞(blocking),概念前提:一事务持有数据资源上的锁动作:另一事务请求相同资源上的不兼

3、容锁后果:新的锁请求被阻塞,请求等待至锁被释放实例:Connection1:获得某行的排他锁Connection2:申请同一行的共享锁,DBA,检测阻塞,1.SP_WHO/SP_LOCK,DBA,检测阻塞,2.SYS.DM_TRAN_LOCKSSELECT request_session_id as 服务器进程标识符,resource_type as 被锁定资源类型,request_mode as 锁模式,request_status as 请求状态FROM sys.dm_tran_locks,DBA,检测阻塞,3.Othersys.dm_exec_connections(阻塞链中进程相关联接

4、信息)-可了解联接中最后读写的时间及SQL语句select*from sys.dm_exec_connectionsCROSS APPLY sys.dm_exec_sql_text(most_recent_sql_handle)as STwhere session_id IN(55,56);sys.dm_exec_sessions(查询阻塞中涉及的会话)sys.dm_exec_requests(活动请求信息),DBA,终止和避免阻塞,KillSET LOCK_TIMEOUT timeout_period,DBA,死锁,DBA,概念:多任务中,每个任务锁定了其他任务试图锁定的资源,导致的任务永久

5、阻塞。例子:CREATE TABLE Table1(Col1 int default(0);CREATE TABLE Table2(Col1 int default(0);INSERT INTO Table1 VALUES(1);INSERT INTO Table2 VALUES(1);Begin Tran Update Table1 Set Col1=Col1+1;WaitFor Delay 00:01:00;SELECT*FROM Table2Rollback Tran;Begin Tran Update Table2 Set Col1=Col1+1;WaitFor Delay 00:01

6、:00;SELECT*FROM Table1Rollback Tran;,死锁检测与查看,DBA,死锁检测:锁监视线程。定期搜索数据库引擎实例的所有任务。检测到死锁后线程选择一个死锁牺牲品来结束死锁。死锁牺牲品的事务以1025错误返回到应有程序并释放事务持有的锁。默认选择回滚开销最小的会话作为牺牲品。DEADLOCK_PRIOPRTY低的死锁被牺牲。死锁查看工具:1024:报告死锁涉及的每个节点设置格式信息。1222:设置死锁信息的格式,先进程后资源。事件探查器死锁图形事件。,降低死锁的方法,DBA,按同一顺序访问对象。(注:避免出现循环)避免事务中的用户交互。(注:减少持有资源的时间,较少锁

7、竞争)保持事务简短并处于一个批处理中。(注:同(2),减少持有资源的时间)使用较低的隔离级别。使用较低隔离级别比使用高隔离级别持有共享锁的时间更短。使用基于行版本控制的隔离级别READ_COMMITTED_SNAPSHOT设置为ON,读操作为行版本控制而不是共享锁ALLOW_SNAPSHOT_ISOLATION设置为ON,快照隔离也使用行版本控制使用绑定连接,死锁处理,DBA,方法一:EXEC sp_who active看哪个引起的阻塞,blk=53;或者exec sp_lock 看哪个spid 处于wait状态,通过kill spid干掉相关进程。方法二:设定锁超时:SELECT LOCK_TIMEOUTSET LOCK_TIMEOUT 5000SQL Server内部有一个锁监视器线程执行死锁检查自动处理。在select语句上加表级锁WITH(no lock),此方法有可能导致脏读,因为读取的未提交的数据。行版本控制的隔离级别,不加读锁。既不死锁也不读脏数据。SET ALLOW_SNAPSHOT_ISOLATION ONSET READ_COMMITTED_SNAPSHOT ON,DBA,Thank You!,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号