SQL Server 2005 T-SQL Recipes------Transaction, Locking, Blocking, Deadlocking

1. 事务控制
    SQL Server 2005支持3种类型的事务:Autocommit, Explicit,Implicit事务。
    Autocommit是SQL Server 2005事务的默认行为。每个T-SQL执行完成后都默认提交。特点是没有恢复选项。
    Implicit是隐式事务,当"Alter table, Select, Update,Insert,Open,Delete"等命令执行完后,事务一致是打开状态,直到Rollback, Commit命令的执行。通过"SET
IMPLICIT_TRANSACTIONS ON”打开这种事务模式。在生产环境中,这是非常危险的。开发者可能忘记了关闭事务。
    Explicit事务是由开发者来定义事务的开始和结束,推荐的事务控制模式。

2. 使用DBCC OpenTran显示最旧的活动事务
    活动事务会阻止其他进程访问访问被修改的数据,而且会导致日志的不断增长。使用DBCC OpenTran可以显示最旧的活动事务信息。

3. Lock
    Lock可以施加于不同的数据库对象上,有不同的粒度。sys.dm_tran_locks提供了对锁活动监控信息。

4. 事务孤立级别
    SET TRANSACTION ISOLATION LEVEL命令。

5. 阻塞
    SET LOCK_TIMEOUT定义超时限制。
    sys.dm_os_waiting_tasks系统视图查看阻塞进程。当查询到阻塞进程ID后,通过DBCC INPUTBUFFER查看该进程对应的正在执行的sql语句。杀死进程的命令是:KILL。

6. 死锁
    默认情况下,当死锁发生时,SQL Server并不返回明显的日志信息。但是通过DBCC TRACEOFF (1222, -1)把标志位打开,这样就系统会日志死锁信息了。
    通过SET DEADLOCK_PRIORITY命令可以设置某个进程成为死锁受害者的优先级。

你可能感兴趣的:(sql server 2005)