OceanBase 只读事务能否降低集群 CPU 负载

【使用环境】生产环境
【OB or 其他组件】OceanBase
【使用版本】4.2.5
【问题描述】大量查询 SQL 设置只读事务,是否能减少日志同步开销?
【复现路径】线上报表业务大批量查询
【附件及日志】无
【备注】[@论坛小助手]

5 个赞

@论坛小助手

2 个赞

OceanBase 只读事务对集群 CPU 负载的影响

根据您提供的信息,您在生产环境中使用 OceanBase 4.2.5 版本,并且有大量的查询 SQL 设置为只读事务。您想了解这些只读事务是否能减少日志同步开销并降低集群的 CPU 负载。

根据文档库中的信息

  1. XA 事务优化机制
    在 XA 事务中,如果某个全局事务涉及的某个资源管理器仅提供了读取服务,那么当该全局事务进入到提交阶段后,该资源管理器不需要为该全局事务持久化做任何的数据修改。OceanBase 数据库系统收到某个事务分支的准备请求后,如果发现该事务分支没有修改任何数据,可以返回一个特殊的响应消息,然后释放该事务分支持有的资源。这样可以减少不必要的日志记录和同步开销。

  2. 多版本读一致性
    多版本读一致性在数据库内部是广泛使用的,也是实现并发控制的关键之一。OceanBase 数据库的只读语句要求提供强一致性读相同的能力,需要提供返回事务一致性点的能力。这意味着只读事务可以通过多版本读一致性机制避免对数据进行锁定,从而减少对 CPU 和 I/O 的竞争。

结论

  • 减少日志同步开销:对于只读事务,由于不涉及数据修改,因此可以减少不必要的日志记录和同步开销,从而降低集群的 I/O 负载。
  • 降低 CPU 负载:通过多版本读一致性机制,只读事务可以避免对数据进行锁定,从而减少对 CPU 和 I/O 的竞争,进一步降低集群的 CPU 负载。

综上所述,在大量查询 SQL 设置为只读事务的情况下,确实可以减少日志同步开销并降低集群的 CPU 负载。这种优化对于线上报表业务大批量查询尤其有效。建议您继续使用只读事务来优化您的查询性能。

详情请参考:

  1. 分布式事务
  2. XA 事务
  3. 多版本读一致性
  4. OceanBase 数据库性能的影响因素
  5. SQL 调优常见问题
  6. SQL FAQ
  7. 多租户线程常见问题
  8. JOIN 表使用建议
  9. 事务相关规范
  10. OceanBase 集群运维管理之用户实操
3 个赞

对于确定不修改数据的查询,可以用显式使用只读事务语法

1 个赞

多谢多谢

学习学习一下