易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL Server死锁总结

1.
死锁原理
   
根据操作系统中的定义:死锁是指在一组进程中的各个进程均占有不会释放的资源,但因互相申请被其他进程所站用不会释放的资源而处于的一种永久等待状态。
   
死锁的四个必要条件:
互斥条件
(Mutual exclusion)
:资源不能被共享,只能由一个进程使用。
请求与保持条件
(Hold and wait)
:已经得到资源的进程可以再次申请新的资源。
非剥夺条件
(No pre-emption)
:已经分配的资源不能从相应的进程中被强制地剥夺。
循环等待条件
(Circular wait)
:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源。
对应到
SQL Server
中,当在两个或多个任务中,如果每个任务锁定了其他任务试图锁定的资源,此时会造成这些任务永久阻塞,从而出现死锁;这些资源可能是:单行
(RID
,堆中的单行
)
、索引中的键
(KEY
,行锁
)
、页
(PAG

8KB)
、区结构
(EXT
,连续的
8

)
、堆或
B

(HOBT)
、表
(TAB
,包括数据和索引
)
、文件
(File
,数据库文件
)
、应用程序专用资源
(APP)
、元数据
(METADATA)
、分配单元
(Allocation_Unit)
、整个数据库
(DB)

一个死锁示例如下图所示:
    说明:
T1

T2
表示两个任务;
R1

R2
表示两个资源;由资源指向任务的箭头
(

R1->T1

R2->T2)
表示该资源被改任务所持有;由任务指向资源的箭头
(

T1->S2

T2->S1)
表示该任务正在请求对应目标资源;
    其满足上面死锁的四个必要条件:
(1).
互斥:资源
S1

S2
不能被共享,同一时间只能由一个任务使用;
(2).
请求与保持条件:
T1
持有
S1
的同时,请求
S2

T2
持有
S2
的同时请求
S1

(3).
非剥夺条件:
T1
无法从
T2
上剥夺
S2

T2
也无法从
T1
上剥夺
S1

(4).
循环等待条件:上图中的箭头构成环路,存在循环等待。
 
2.
死锁排查
(1).
使用
SQL Server
的系统存储过程
sp_who

sp_lock
,可以查看当前数据库中的锁情况;进而根据
objectID(@objID)(SQL Server 2005)/ object_name(@objID)(Sql Server 2000)
可以查看哪个资源被锁,用
dbcc ld(@blk)
,可以查看最后一条发生给
SQL Server

Sql
语句;
CREATE
 
Table
 #Who(spid&nbs


相关文档:

常用SQL语句书写技巧

 转自:http://jianghaifeng.blogchina.com/3841741.html
 SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实、最有效的手段,有时甚至是唯一的手段,比如在不允许大幅度修改现有数据库结构的情况下。
通过优化SQL语句提高查询性能的关键是:
 根据实际需求情况,建立合适的索引;
&# ......

DateDiff: SQL server函数

 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。
  语法
  DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
  DateDiff 函数语法中有下列命名参数:
  部分 描述
  interval 必要。字符串表达式,表示用来计算date1 和 date2 的时间差的时间间隔
  Date1 ......

50个常用sql语句

Student(S#,Sname,Sage,Ssex) 学生表
Course(C#,Cname,T#) 课程表
SC(S#,C#,score) 成绩表
Teacher(T#,Tname) 教师表
问题:
1、查询“001”课程比“002”课程成绩高的所有学生的学号;
  select a.S# from (select s#,score from SC where C#='001') a,(select s#,score
  fr ......

SQL事务处理语句总结

 
存储过程中常用到的SQL事务处理语句格式可能会有如下几种:
第一种:
set   xact_abort   on 
begin   tran 
        insert   ... 
        update   ... 
    ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号