封锁粒度也成锁对象或者锁范围,表示封锁的作用范围,例如,一条记录上的锁只作用于该记录,一个关系上的锁作用于该关系中的所有记录。
可见,不同封锁粒度涉及封锁的数据量是不同的。
封锁对象的级别越高,涉及的数据量越大。封锁力度越大,如对整个数据库进行封锁,则将会对数据库中全部关系、记录进行封锁,系统处理单个事务的能力要强一些,系统开销相对小一些,但是,系统的并发度就会减小,处理并发事务的能力就会减弱。
反之,封锁粒度越小,如对单个表或记录进行封锁,系统的并发度就会高一些,系统开销也就会越大。
GBase 8s的锁机制可以锁定不同的粒度对象,在一个系统中同时存在不同大小的封锁单元供不同的事务选择使用是比较理想的。
综合来说,锁对象力度越高并发性越低,比如独占锁锁定数据库,则其他用户不能连接到该数据库。反之,如果独占一个表的某一行记录,则其他用户可以并行访问(读取、修改)其他记录,所以,在系统要求多用户高并发访问的情况下,应尽量采用低粒度的锁,如采用行级锁,如果系统要求较少并发,或者进行一些管理事务(数据库重建、表重建),则为了获得较高的性能,可以采用高粒度的锁。