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

OceanBase如何查找某一类系统表

原创 不想用随机名字 2025-04-19
36

问题描述

  新申请了一个租户,在对数据加工以及手动收集统计信息时,比原来的租户慢非常多,数据量、租户资源规格都没有区别,于是咨询了OB厂商老师,经检查是由于变量parallel_servers_target不同导致的,运来的租户parallel_servers_target=64,新申请的租户parallel_servers_target=3。
  parallel_servers_target 用于设置每个 Server 上的并行查询排队条件。当多条并行执行(Parallel eXecution,PX)SQL 总计消耗的线程数超过并行查询排队条件后,后继并行执行 SQL 需要排队等待,我们收集统计信息指定的degree=64,比参数值大太多,所有需要排队等待。
以后如果有指定并行度或者有hint,parallel(n)等操作一定要记得检查这个参数!!!!

set global parallel_servers_target=64;
复制

  OceanBase 中以双下划线 __ 开头的表是 系统内部表,用于存储数据库的元数据、集群状态、资源分配等核心信息。这些表由 OceanBase 自行维护,通常不建议直接操作,但管理员可通过查询它们监控或诊断集群状态。

延伸

  我想看一下这个参数是否是被人修改过,但是OB有那么多的系统表,不确定从哪个表入手,接下来就是我的查找思路,OceanBase 中以双下划线 __ 开头的表是 系统内部表,用于存储数据库的元数据、集群状态、资源分配等核心信息。这些表由 OceanBase 自行维护,通常不建议直接操作,但管理员可通过查询它们监控或诊断集群状态。

  1. 查询“0”号表 __all_core_table
    __all_core_table 表是系统表中最核心的元数据表,__all_core_table 表记录了其他核心系统表的 schema 信息和__all_root_table 的物理位置元信息。
  2. 查询__all_table_v2表
    每一个普通租户会分别包含一张 __all_table_v2 表,这两张表记录该租户下用户表的 schema,因为我要查询系统表,所以登录的是sys租户,我要查变量的修改历史,因此我的条件是%variable%,如果是参数则可以把条件变成 %Wparameter%。
select * from __all_table_v2 where table_name like '%variable%';
复制

在所有的结果中再找可能是我想要的表,最终找到我想要的表__all_virtual_sys_variable_history

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

评论