OB 有行锁统计信息表嘛?

【 使用环境 】测试环境
【 OB or 其他组件 】OB
【 使用版本 】4.x
【问题描述】OB 有行锁的统计信息表吗?比如行锁的申请次数,等待次数,超时次数还有锁时长 统计信息@论坛小助手

【备注】基于 LLM 和开源文档 RAG 的论坛小助手已开放测试,在发帖时输入 [@论坛小助手] 即可召唤小助手,欢迎试用!

根据文档库中的信息,OceanBase 数据库并没有直接提供行锁的统计信息表来记录行锁的申请次数、等待次数、超时次数以及锁时长等详细统计信息。通常情况下,OceanBase 会通过多版本两阶段锁协议来管理并发控制,并且读操作不会上锁以提高并发性能(参考自“OceanBase 数据库使用了多版本两阶段锁”相关内容)。

但是,对于锁相关的调试和诊断,OceanBase 提供了一些视图用于监控和故障排查,例如:

  • GV$OB_LOCK_WAIT_STAT:此视图可以用来查看当前系统中所有事务等待锁的状态。它包含了等待锁的会话ID、对象ID、锁模式等信息,但请注意这并不是一个累积性的统计表,而是反映当前时刻的锁等待情况。

  • GV$OB_TRANSACTION:该视图提供了关于正在进行中的事务的信息,包括事务持有的锁信息。虽然这不是专门针对行锁的统计信息,但对于理解特定时间点上的锁持有状况仍然有用。

如果您需要更详细的行锁统计信息,可能需要依赖于应用层的日志记录或者借助外部工具进行分析。另外,也可以考虑向 OceanBase 提交功能请求,以便未来版本中能够包含更丰富的锁统计特性。

如果上述内容未能满足您的需求或有其他疑问,请联系 OceanBase 的人工答疑以获取更多帮助。

检索到的文档如下:

  1. 锁机制
  2. 自动统计信息收集
  3. 6000 ~ 6999
  4. DBA_OB_AUX_STATISTICS

@辞霜 大佬,有空帮忙看下这个,感谢

看了下OB 的锁统计,好像只有GV$SYSTEM_EVENT 里面搜索latch 等关键字查看latch 锁
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002013521

还有就是CDB_OB_DEADLOCK_EVENT_HISTORY 死锁的记录
https://www.oceanbase.com/docs/common-oceanbase-database-cn-1000000002016757

但是没找到关于行锁的统计信息

根据文档库中的信息,确实如您所提到的,OceanBase 数据库并没有直接提供专门用于记录行锁申请次数、等待次数、超时次数以及锁时长等详细统计信息的表。以下是更详细的说明:

  1. 关于锁统计视图

    • GV$SYSTEM_EVENT:此视图主要用于展示系统事件(包括闩锁 latch 等)的等待情况,但并不是针对行锁的具体统计。
    • CDB_OB_DEADLOCK_EVENT_HISTORY 和 DBA_OB_DEADLOCK_EVENT_HISTORY:这两个视图分别在 root 租户和其他租户下展示了死锁事件的历史记录,可以用来查看过去发生的死锁及其相关信息,但这也不是行锁的统计信息。
  2. 行锁监控

    • 对于行锁的实时状态,您可以使用 GV$OB_LOCKS 视图(从 V4.2.0 版本开始引入),该视图显示了当前用户各表持锁或请求锁的情况。这可以帮助您了解当前时刻的行锁持有和等待状况,但不是累积性的统计信息。

      SELECT * FROM GV$OB_LOCKS;
      
  3. 进一步的行锁分析

    • 如果需要更深入地分析行锁的行为,可能需要结合应用层的日志记录或者通过外部工具进行跟踪和统计。此外,也可以考虑在应用程序中实现自定义的锁统计逻辑,以满足特定的需求。
  4. 功能请求

    • 如果行锁统计对于您的应用场景非常重要,建议向 OceanBase 提交功能请求,以便开发团队评估并在未来的版本中加入这一特性。

综上所述,目前 OceanBase 社区版确实没有提供专门的行锁统计信息表。如果您有更多问题或需要进一步的帮助,请随时告知。希望这些信息对您有所帮助。

具体信息可参考以下文档:

  1. 锁机制
  2. 系统视图总览
  3. GV$OB_LOCKS
  4. V$OB_LOCKS
  5. 死锁检测
  6. obcdc 开发说明

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)


WR 报告里面的行锁统计这个是怎么获取的?

可以根据这个语句查一下
select * from (select a.tenant_id,a.svr_ip,a.ls_id,a.table_id,c.table_id table_actual_id,c.table_name,a.tablet_id,a.session_id,a.ctx_create_time
from __all_virtual_trans_lock_stat a left join __all_virtual_tablet_to_ls b on b.tablet_id=a.tablet_id left join __all_virtual_table c on b.table_id=c.table_id) t where t.table_name like ‘%ZRY2%’;


字段不对,a.lock_for_read_retry_count
我是在4.3.4 版本里面试的

没有这个字段 把这个字段去掉

去掉可以查,我试试看能不能行,感谢

好的 目前可以这样查行锁信息

学习了

我是小白,我记得oceanbase好像只有表级锁吧

有行锁 这个是行锁冲突排查
https://www.oceanbase.com/knowledge-base/oceanbase-database-1000000001012955?back=kb