表锁和行锁

1  表锁需要维护的数量比行锁少,所以行锁所需的成本高。但对于同一个表的操作来说 比如先要在最后一行添加一行数据,然后再修改其他行的数据。这就得用行锁。所以说行锁和表锁不能说那个好那个不好,只能根据情况定。

2 但是加了行锁 还得加意向锁 但是表锁不需要。  对于比较锁的快慢没有意义。应该比较的是不同粒度锁的情况下插入更新删除的速度。

3  锁定对象的大小叫做锁的粒度。所对象可以是逻辑单元(如数据库,表,记录,列,索引) 也可以是物理单元(如数据页,索引页)。

  锁定的粒度 与系统的并发度和并发控制的开销密切相关。一般锁的粒度越大 ,锁定的对象就小,可选择性小,开销就笑 并发度就小。反之 粒度越小,对象就多 ,可选择性大,开销大 并发大。

4 :所以在锁定粒度的同时应该考虑并发度 和开销,以求最优效果。一般需要处理大量记录的事物可以是表的锁定粒度。需要多个表中的大量记录的事物可以以数据库为锁定粒度。如果需要处理某个表中的少量记录则一记录为锁定粒度。

5 多粒度锁协议是指,允许对多粒度树中的节点单独地加锁,另外对一个节点加锁意味着对这个节点的各个子节点也加同样的锁。

因此可以用俩中方式对多粒度树中的节点加锁 :显式锁定和隐式锁定。显示锁定是在事物明确指定的节点上加锁。  隐式锁是由于在其上级节点中加显示锁时而使该节点获得锁。

一般对一个节点加锁时,先检查该节点上是否有无显示锁定与之冲突,检查上级节点是否有无锁与之冲突。 检查下级 节点是否有无锁冲突。

 

posted @ 2015-07-31 12:03  BiuBiuBiu666  阅读(957)  评论(0编辑  收藏  举报