易截截图软件、单文件、免安装、纯绿色、仅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


相关文档:

linq to sql 详

最近学习 linq to sql 感觉还是可以的,方便快捷,以前问是以为不好用,不想用,但是今天用了一下感觉还是不错的, 确实是快,但是我又在想
如果出错了怎么办,这样一个类里放那么多的文件是有点不好,再说了 linq to sql 低层不知道怎么实现的,还是没有自己写的访问感觉舒服点呵呵!!!
如果是快速开发用&nb ......

常用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 ......

SQL 数据库间复制表

方法一:
DB1  tb1  
DB2  tb2
选择DB1 到表的列表那里
选择tb1表 右键 所有任务 数据导出
下一步  选择你要导出的数据库DB1  下一步 选择你要导入的数据库DB2
下一步  选择你要导的表(前面画勾)tb1, 后面对应的是新数据库的表名tb2(默认是相同表名,可修改) 下一步 完了 ......

关于SQL语句

今天写网站的时候很囧啊,发现查找用户权限的时候无缘无故的同一个权限重复出现很多次
修改后的SQL语句如下
SELECT
node
.
id
,
node
.
name
,
access
.
role_id
from
think_role_user
AS
user
,
think_access
AS
access
,
think_node
AS
node
WHERE
user
.
user_id
=
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号