1、排它锁、共享锁出现的意义 数据库的并发事务对数据库进行读写,可能会破坏事务的隔离性和数据一致性。为了保持事务的隔离性,系统必须对事务之间的相互作用加以控制。最典型的做法就是当一个事务访问某个数据对象时, 其他事务都不能更新该数据对象。最常用的控制手段就是加锁,该方法是只允许事务访问当前持有锁的数据项。其中最常用的有排它锁、共享锁。 2、排它锁(Exclusive Locks 简称X锁) 排它锁也成为写锁,主要用于对数据读写操作时进行锁定。如果事务T对数据A加上排它锁后,就只允许事务T对数据A的读取、修改,其他事务对数据A不能再加任何锁,也不能读取和修改数据A,直到事务T释放A上的排它锁。 3、共享锁(Share Locks 简称S锁) 共享锁也成为读锁,主要用于对数据进行读取操作时进行锁定。如果事务T对数据A加上共享锁后,事务T只能读取数据A但不可以修改,其他事务可以读数据A加S锁来读取,只要数据A上有共享锁,任何事务只能对其加共享锁,而不能加排它锁来修改。 4、封锁协议 4.1 封锁协议的作用 因为数据库加锁可以限制其他事务对数据的操作,但会降低事务的并发性,这个时候可以采用封锁协议来保证事务的一致性前提下尽可能提高并发性。封锁协议是对数据加锁类型、加锁时间、释放锁时间的一些规则的描述。 常用的封锁协议:一级封锁协议、二级封锁协议、三级封锁协议。
个人博客网站:https:// |
|