配置项查询与视图查询为什么显示数据不一样?

SELECT * FROM GV$OB_PARAMETERS WHERE NAME LIKE ‘freeze%’;
SHOW PARAMETERS LIKE ‘freeze%’
在 sys 租户下执行,为什么上一条会显示所有租户的,而下一条只显示当前租户?

4 个赞

1、GV$OB_PARAMETERS 查全集群所有租户** GV$ 是 OceanBase 全局视图,sys 租户执行会聚合所有节点、所有租户的参数,同时包含下划线开头的内部隐藏参数,所以数据量大、覆盖全部租户。
2、SHOW PARAMETERS 默认仅查当前租户** 不加TENANT限定条件时,只返回登录 sys 租户自身参数,并且自动过滤内部隐藏参数;如需查其他租户,需追加 TENANT=租户名
3、结果不一致核心两点** ① 查询租户范围:全局视图全量遍历,SHOW 命令默认限定当前租户;② 参数过滤规则:GV 视图展示全部参数(含隐藏),SHOW 只展示对外公开参数。

学到了。

@论坛小助手

根据文档库中的信息,GV$OB_PARAMETERS 视图和 SHOW PARAMETERS 语句在查询配置项时的行为有所不同。具体如下:

  1. GV$OB_PARAMETERS 视图:

    • sys 租户下访问 GV$OB_PARAMETERS 视图时,它将显示所有租户的信息。
    • 文档片段中提到:“在 sys 租户下访问,显示的是所有租户的信息。”
    • 这意味着当你在 sys 租户下执行 SELECT * FROM GV$OB_PARAMETERS WHERE NAME LIKE 'freeze%' 时,你会看到所有租户中与 freeze% 相关的配置项。
  2. SHOW PARAMETERS 语句:

    • SHOW PARAMETERS 语句默认只显示当前租户的配置项。
    • 即使是在 sys 租户下执行 SHOW PARAMETERS LIKE 'freeze%',它也只会显示当前租户(即 sys 租户)的相关配置项。
    • 文档片段中提到:sys 租户和所有用户租户均可以使用 SHOW PARAMETERS 语句或视图 GV$OB_PARAMETERS 查询该配置项。但没有明确指出 SHOW PARAMETERS 会显示所有租户的信息。

结论

  • GV$OB_PARAMETERS 视图在 sys 租户下显示所有租户的信息。
  • SHOW PARAMETERS 语句在任何租户下都只显示当前租户的信息。

因此,在 sys 租户下执行 SELECT * FROM GV$OB_PARAMETERS WHERE NAME LIKE 'freeze%' 会显示所有租户的信息,而执行 SHOW PARAMETERS LIKE 'freeze%' 只会显示 sys 租户的信息。

依据文档片段:

更多信息请查看:

  1. major_freeze_duty_time
  2. 系统视图概述
  3. datafile_next
  4. sync_io_thread_count
  5. location_refresh_thread_count
  6. syslog_compress_func
  7. syslog_file_uncompressed_count
  8. enable_global_background_resource_isolation
  9. ob_storage_s3_url_encode_type
  10. enable_cgroup

学习了

一个global, 一个session , 全部与局部的关系。