首批通过分布式安全可靠测评,为关键业务系统打造
带有 __all_virtual_ls_info 表的 SQL 比较消耗资源
更新时间:2026-05-18 01:51
问题现象
在无业务访问的情况下,通过 TOP SQL 监控发现下面的 SQL 执行时间比较长,比较消耗资源。下面的 SQL 是获取黑名单的 SQL(每 3s 发送一次),这个 SQL 在各个版本上都存在,在非修复版本可能会比较消耗资源。
select a.svr_ip, a.svr_port, a.tenant_id, a.ls_id, a.role, nvl(b.weak_read_scn, ?) as weak_read_scn, nvl(b.migrate_status, ?) as migrate_status, nvl(b.tx_blocked, ?) as tx_blocked from oceanbase.__all_virtual_ls_meta_table a left join oceanbase.__all_virtual_ls_info b on a.svr_ip = b.svr_ip and a.svr_port = b.svr_port and a.tenant_id = b.tenant_id and a.ls_id = b.ls_id;
关键信息
集群特点: tablet 数量特别多,三副本总计达到数百万级别。
影响的表:
__all_virtual_ls_info。新增字段:
required_data_disk_size。
问题原因
此问题是由于 OceanBase 内核的一个 BUG 引起,具体表现为在 __all_virtual_ls_info 表中新增了 required_data_disk_size 字段。该字段在获取 tablet 大小时会导致性能下降,尤其是在 tablet 数量较多的场景下,性能问题更加明显。
问题的风险及影响
CPU 使用率可能升高。
关于
__all_virtual_ls_info表的 SQL 执行速度变慢。
适用版本
OceanBase 数据库 V4.2.x、V4.3.x、V4.4.x 版本。
解决方法
升级到问题已修复版本。目前已修复的版本包含 OceanBase 数据库 V4.2.5 BP7(oceanbase-4.2.5.7-107000092025103121)版本、V4.3.5 BP5(oceanbase-4.3.5.5-105000212025111617)版本、V4.4.1(oceanbase-4.4.1.0-100000242025092415)及之后版本。
若暂时无法升级,可以考虑减少tablet的数量,但这通常不是直接的解决方案,而是作为缓解措施之一。
规避方式
在不影响业务的前提下,尽量避免在 sys 租户中执行涉及
__all_virtual_ls_info表的 SQL 查询。监控并管理集群中的 tablet 数量,避免过度增长导致类似性能问题。