暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

人大金仓数据库KingbaseES 数据库中锁相关整理(表锁、行锁、页锁)

原创 数据猿 2023-12-27
1184


数据库的锁

关键字:

KingbaseES、锁、表级锁、行级锁、页级锁、人大金仓、KingbaseES

表锁、行锁、页锁

按锁的范围(粒度)分类, 可以分为表级锁、行级锁和页级锁。

只用到表锁,不会有死锁的问题,锁的开销也很小,但是相应的并发能力很差。锁的粒度变小了,并发能力变强,但是相应的锁的开销变大,很有可能出现死锁。

  • 表锁

表级锁加锁对象是表,这使得加锁范围太大,导致并发并不高,于是人们提出了行级锁的概念,但行级锁与表级锁之间会产生冲突,这时需要一种机制来描述行级锁与表级锁之间的关系,有了意向锁的概念,这时又加了两种锁,即意向共享锁(Row Share) 和意向排他锁(Row Exclusive),由于意向锁之间不会产生冲突,因为他们是“有意”做,还没真做;而且意向排它锁相互之间也不会产生冲突,于是又需要更严格一些的锁,这样就产生了Share Update Exclusive,Share Row Exclusive可以看成Share与Row Exclusive,不会自动请求这个锁模式,也就是目前没有使用这种锁。

  • 行锁

特定行上的行级锁是在行被更新的时候自动请求的(或者被删除时或标记为更新)。 锁一直保持到事务提交或者回滚。行级锁不影响对数据的查询;它们只阻塞对同一行的写入。 要在不修改某行的前提下请求在该行的行级锁,用 SELECT FOR UPDATE 选取该行。请注意一旦我们请求了特定的行级锁,那么该事务就可以多次对该行进行更新而不用担心冲突。

  • 页锁

除了表级别的和行级别的锁以外, 页面级别的共享/排他销也用于控制对共享缓冲池中表页面的读/写访问。这些锁在抓取或者更新一行后马上被释放。应用程序员通常不需要关心页级锁,在这里提到它们只是为了完整。


「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论