OceanBase数据库这个内部表的话,block_session_id怎么和session_id是同一个,我是构造的行锁,应该是两个不同的会话呀?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在 OceanBase 数据库中,block_session_id 和 session_id 是两个不同的标识符,它们表示不同的概念。
session_id 表示一个会话的唯一标识符,用于标识客户端与数据库之间的连接。每个会话在建立时会被分配一个独立的 session_id。
block_session_id(也称为阻塞会话 ID)是用于表示正在阻塞当前会话的会话的标识符。当一个会话发起了一个行锁请求并被阻塞时,会记录下正在阻塞该会话的会话的 block_session_id。
在行级锁的情况下,如果一个会话 A 请求了一个被会话 B 持有的行锁,并且会话 B 正在使用该行锁而未释放,则会话 A 会被阻塞,并且它的 block_session_id 会被设置为会话 B 的 session_id。
通过这种方式,数据库可以跟踪和记录所有的阻塞关系,以便进行死锁检测和解决。
https://www.oceanbase.com/knowledge-base/oceanbase-database-20000000016?back=kb
,此回答整理自钉群“[社区]技术答疑群OceanBase”