参考 : http://tech.ddvip.com/2008-09/122084673361639.html
锁 : 资源 vs. 并发
低级别的锁(e.g. 行锁) : 并发高, 资源占用高
高级别的锁(e.g. 表锁) : 并发低, 资源占用低
锁升级: 从低级别锁到高级别锁
为了提高系统的性能,加快事务的处理速度,缩短事务的等待时间,应该使锁定的资源最小化。
事务的类型 根据系统的设置,可以把事务分成两种类型。一种是系统提供的事务,另一种是用户定义的事务。
系统提供的事务是指在执行某些语句时,一条语句就是一个事务。(e.g Update, Insert, Delete)
用户定义的事务是指用BEGIN TRANSACTION语句来定义明确的用户定义的事务.
事务的工作原理 事务开始之后,事务所有的操作都陆续写到事务日志中 。写到日志中的操作,一般有两种:一种是针对数据的操作,一种是针对任务的操作。针对数据的操作,例如 插入、删除和修改,这是典型的事务操作,这些操作的对象是大量的数据。有些操作是针对任务的,例如创建索引,这些任务操作在事务日志中记录一个标志,用于 表示执行了这种操作。当取消这种事务时,系统自动执行这种操作的反操作,保证系统的一致性。系统自动生成一个检查点机制,这个检查点周期地发生。检查点的 周期是系统根据用户定义的时间间隔和系统活动的频度由系统自动计算出来的时间间隔。检查点周期地检查事务日志,如果在事务日志中,事务全部完成,那么检查 点将事务日志中的事务提交到数据库中,并且在事务日志中做一个检查点提交标记。如果在事务日志中,事务没有完成,那么检查点将事务日志中的事务不提交到数 据库中,并且在事务日志中做一个检查点未提交标记。 事务的恢复以及检查点保护系统的完整和可恢复。
锁机制
表1 SQL Server系统提供的各种锁之间的兼容性
锁名称 | IS | S | U | IX | SIX | X |
意图共享锁(IS) | 兼容 | 兼容 | 兼容 | 兼容 | 兼容 | 不兼容 |
共享锁(S) | 兼容 | 兼容 | 兼容 | 不兼容 | 不兼容 | 不兼容 |
修改锁(U) | 兼容 | 兼容 | 不兼容 | 不兼容 | 不兼容 | 不兼容 |
意图排它锁(IX) | 兼容 | 不兼容 | 不兼容 | 兼容 | 不兼容 | 不兼容 |
意图排它的共享锁(SIX) | 兼容 | 不兼容 | 不兼容 | 不兼容 | 不兼容 | 不兼容 |
排它锁(X) | 不兼容 | 不兼容 | 不兼容 | 不兼容 | 不兼容 | 不兼容 |