数据库中锁的操作
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
会返回尚未提交的数据,也不能返回脏数据。它是SQL Sever默认的隔离级。 ②READ UNCOMMITTED:与READ COMMITTED隔离 级相反,它允许读取已经被其他用户修改但尚未提交确定的 数据。 ③REPEATABLE READ:在此隔离级下,用SELECT命令 读取的数据在整个命令执行过程中不会被更改。此选项会影 响系统的效能,非必要情况最好不用此隔离级。 ④SERIALIZABLE:与DELETE语句中SERIALIZABLE 选项含义相同。
上一页 下一页 返回
学习领域十一数据库中锁的操作
4.查看锁
可以通过企业管理器或存储过程来查看锁。 (1)用企业管理器Enterprise Managr查看锁:在企业管理
器中选择目录树窗口中“管理”文件夹下,“当前活动”中 的“锁/进程ID”节点,则可以查看当前锁定的进程,如图 11-1所示。 (2)用系统存储过程Sp lock查看锁。存储过程印_lock的 语法如下: Sp lock spid
上一页 下一页 返回
学习领域十一数据库中锁的操作
(2)从程序员的角度看,锁分为以下两种类型。 ①乐观锁:乐观锁假定在处理数据时,不需要在应用程序的代
码中做任何事情就可以直接在记录上加锁,即完全依靠数据 库来管理锁的工作。 ②悲观锁:悲观锁对数据库系统的自动管理不感冒,需要程 序员直接管理数据或对象上的加锁处理,并负责获取、共享 和放弃正在使用的数据上的任何锁。
死锁会造成资源的大量浪费,甚至会使系统崩溃。在SQL Sever中解决死锁的原则是“牺牲一个比两个都死强”,即 挑出一个进程作为牺牲者,将其事务回滚,并向执行此进程 的程序发送编号为1205的错误信息。而防止死锁的途径就 是不能让满足死锁条件的情况发生,为此,用户需要遵循以 下原则。
上一页 下一页 返回
学习领域十一数据库中锁的操作
1.数据库中锁的对象
锁(Lock)是在多用户环境下对资源访问的一种限制机制。 当对一个数据源加锁后,此数据源就有了一定的访问限制, 称对此数据源进行了“锁定”。
在SQL Sever中,可以对以下的对象进行锁定。 数据行:数据页中的单行数据。 索引行:索引页中的单行数据,即索引的键值。 页:页是SQL Sever存取数据的基本单位,其大小为8KB。 盘区:一个盘区由8个连续的页组成。 表。 数据库。
下一页
学wenku.baidu.com领域十一数据库中锁的操作
2.锁的类别
在SQL Sever中,锁有两种分类方法。 (l)从数据库系统的角度来看,锁分为以下三种类型。 ①独占锁:独占锁锁定的资源只允许进行锁定操作的程序使
用,其他任何对它的操作均不会被接受。 ②共享锁:共享锁锁定的资源可以被其他用户读取,但其他
用户不能修改它。 ③更新锁:更新锁是为了防止死锁而设立的。
3.隔离级别
在SQL Sever中,隔离级是指一个事务和其他事务的隔离 程度,即指定厂数据库如何保护(锁定)那些当前正在被其他 用户或服务器请求使用的数据。
上一页 下一页 返回
学习领域十一数据库中锁的操作
在SQL Sever中有以下四种隔离级。 ① READ COMMITTED:在此隔离级下,SELECT命令不
学习领域十一数据库中锁的操作
尽量避免并发地执行涉及到修改数据的语句。 要求每个事务一次就将所有要使用的数据全部加锁,否则就
不予执行。 预先规定一个封锁顺序,所有的事务都必须按这个顺序对数
据执行封锁,例如,不同的过程在事务内部对对象的更新执 行顺序应尽量保持一致。 每个事务的执行时间不可太长,对程序段长的事务可考虑将 其分割为几个事务。
上一页 返回
图11-1
返回
上一页 下一页 返回
学习领域十一数据库中锁的操作
5.死锁及其防止
死锁(Deadlocking)是在多用户或多进程状况下,为使用 同一资源而产生的无法解决的争用状态,通俗地讲,就是两 个用户各占用一个资源,两人都想使用对方的资源,但同时 又不愿放弃自己的资源,就一直等待对方放弃资源,如果不 进行外部干涉,就将一直耗下去。
上一页 下一页 返回
学习领域十一数据库中锁的操作
4.查看锁
可以通过企业管理器或存储过程来查看锁。 (1)用企业管理器Enterprise Managr查看锁:在企业管理
器中选择目录树窗口中“管理”文件夹下,“当前活动”中 的“锁/进程ID”节点,则可以查看当前锁定的进程,如图 11-1所示。 (2)用系统存储过程Sp lock查看锁。存储过程印_lock的 语法如下: Sp lock spid
上一页 下一页 返回
学习领域十一数据库中锁的操作
(2)从程序员的角度看,锁分为以下两种类型。 ①乐观锁:乐观锁假定在处理数据时,不需要在应用程序的代
码中做任何事情就可以直接在记录上加锁,即完全依靠数据 库来管理锁的工作。 ②悲观锁:悲观锁对数据库系统的自动管理不感冒,需要程 序员直接管理数据或对象上的加锁处理,并负责获取、共享 和放弃正在使用的数据上的任何锁。
死锁会造成资源的大量浪费,甚至会使系统崩溃。在SQL Sever中解决死锁的原则是“牺牲一个比两个都死强”,即 挑出一个进程作为牺牲者,将其事务回滚,并向执行此进程 的程序发送编号为1205的错误信息。而防止死锁的途径就 是不能让满足死锁条件的情况发生,为此,用户需要遵循以 下原则。
上一页 下一页 返回
学习领域十一数据库中锁的操作
1.数据库中锁的对象
锁(Lock)是在多用户环境下对资源访问的一种限制机制。 当对一个数据源加锁后,此数据源就有了一定的访问限制, 称对此数据源进行了“锁定”。
在SQL Sever中,可以对以下的对象进行锁定。 数据行:数据页中的单行数据。 索引行:索引页中的单行数据,即索引的键值。 页:页是SQL Sever存取数据的基本单位,其大小为8KB。 盘区:一个盘区由8个连续的页组成。 表。 数据库。
下一页
学wenku.baidu.com领域十一数据库中锁的操作
2.锁的类别
在SQL Sever中,锁有两种分类方法。 (l)从数据库系统的角度来看,锁分为以下三种类型。 ①独占锁:独占锁锁定的资源只允许进行锁定操作的程序使
用,其他任何对它的操作均不会被接受。 ②共享锁:共享锁锁定的资源可以被其他用户读取,但其他
用户不能修改它。 ③更新锁:更新锁是为了防止死锁而设立的。
3.隔离级别
在SQL Sever中,隔离级是指一个事务和其他事务的隔离 程度,即指定厂数据库如何保护(锁定)那些当前正在被其他 用户或服务器请求使用的数据。
上一页 下一页 返回
学习领域十一数据库中锁的操作
在SQL Sever中有以下四种隔离级。 ① READ COMMITTED:在此隔离级下,SELECT命令不
学习领域十一数据库中锁的操作
尽量避免并发地执行涉及到修改数据的语句。 要求每个事务一次就将所有要使用的数据全部加锁,否则就
不予执行。 预先规定一个封锁顺序,所有的事务都必须按这个顺序对数
据执行封锁,例如,不同的过程在事务内部对对象的更新执 行顺序应尽量保持一致。 每个事务的执行时间不可太长,对程序段长的事务可考虑将 其分割为几个事务。
上一页 返回
图11-1
返回
上一页 下一页 返回
学习领域十一数据库中锁的操作
5.死锁及其防止
死锁(Deadlocking)是在多用户或多进程状况下,为使用 同一资源而产生的无法解决的争用状态,通俗地讲,就是两 个用户各占用一个资源,两人都想使用对方的资源,但同时 又不愿放弃自己的资源,就一直等待对方放弃资源,如果不 进行外部干涉,就将一直耗下去。