并发控制的实行需要建立在封锁的操作基础上。封锁是实现并发控制的有利途径。封锁能够赋予某一事务操控相关数据的能力。封锁机制主要包含三个支路:第一个支路是请求封锁环节,也就是某项事务在执行控制前针对与之相关的数据申请封锁机制;第二个支路是获得封锁环节,是指当具备一定的条件时,系统通过了封锁请求,使该事务取得了相应的控制权力;第三个支路是解除封锁环节,是指完成数据库的执行工作后,解除封锁权力。为了提升封锁的功效,在执行操作时应该选取适宜的封锁要素,遵照相关的封锁准则。
(一)锁的类型
根据锁的特性,可以将其分为两类:排他锁(Exclusive Locks),简称X锁;共享锁(Share Locks),简称S锁。
1.排他锁
排他锁也称为独占锁或写锁。一旦某项事务将排他锁加在与之相关的数据对象上,信息的读取就受到一定程度的限制,只能更改特定的数据对象,其他事务没有随意更改数据对象的权力,也不能添加其他的锁,只有排他锁被解除,才能允许其他事务介入。
2.共享锁
共享锁也称为读锁。如果某项事务针对数据对象添加共享锁,那么其他事务也只能添加共享锁,不能添加排他锁,共享锁被解除后才允许其他事务介入。
(二)封锁协议
只了解针对数据库信息添加排他锁和共享锁是不能完善统一事务的。在对数据对象加锁时,还需要约定一些规则。例如,何时申请X锁或S锁持锁时间、何时释放等。这些规则称为封锁协议(Locking Protocol)。对封锁方式规定不同的规则,就形成了各种不同的封锁协议。封锁协议分三级,各级封锁协议对并发操作带来的丢失修改、不可重复读取和读“脏”数据等不一致问题,可以在不同程度上予以解决。
1.一级封锁协议(www.xing528.com)
一级封锁协议的主要内容:在执行修改任务前,一定要先添加排他锁,在完成任务后再进行解除操作。操作结束的形式有两种:正常结束和非正常结束。
一级封锁协议能够进一步为数据库系统的安全提供保障,保证数据库的事务是可调节恢复的。此外,执行一级封锁协议时,不能仅仅读取信息,还要添加更改环节,不需要添加封锁,因此不能确保信息的可重复读取和不读“脏”数据。
2.二级封锁协议
二级封锁协议的主要内容:在一级封锁协议的基础上添加一定的任务,并且在进行读取操作前适当添加共享锁,在完成任务后才能解除。
二级封锁协议是为了保证数据库信息的安全,避免读取“脏”数据。在读取信息前,要先添加共享锁;在完成任务后,解除共享锁。
二级封锁协议不仅能够为数据库信息资源提供安全保障,还能避免读取“脏”信息。
3.三级封锁协议
三级封锁协议涉及的主要内容:在一级封锁协议上添加事务前,要先添加共享锁;在修改数据库信息前,添加排他锁;在完成所有任务后,解除排他锁和共享锁。由于三级封锁协议强调即使事务读完数据A后也不释放S锁,所以使得别的事务无法更改数据A。三级封锁协议不但防止了丢失修改和不读“脏”数据,而且防止了不可重复读取。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。