如何准确的查看某个observer使用的内存的总和

SELECT SVR_IP,SVR_PORT ,sum(VALUE)/1024/1024/1024 FROM gv$sysstat WHERE NAME=‘observer memory used size’ group by SVR_IP,SVR_PORT;

疑问gv$sysstat 好像不包含 500的租户,请问该怎么准确的查看 某个observer正在使用的内存的总和呢?

@论坛小助手

根据文档库中的信息,gv$sysstat 视图确实可以用来查看指定机器的内存占用情况,但您提到的问题是该视图似乎不包含租户 ID 为 500 的租户的信息。这可能是因为 gv$sysstat 主要展示的是 OBServer 节点级别的统计信息,而不是针对每个租户的详细内存使用情况。

为了准确查看某个 observer 正在使用的内存总和,您可以结合以下两种方法:

方法 1:通过 gv$sysstat 查看节点总内存

您可以继续使用 gv$sysstat 视图来查询 observer 的总内存使用情况。确保查询条件正确,并且需要对结果进行单位转换(如从字节转换为 GB)。以下是您的 SQL 查询语句,它已经正确地计算了 observer 的内存使用总和:

SELECT SVR_IP, SVR_PORT, SUM(VALUE)/1024/1024/1024 AS USED_MEMORY_GB 
FROM gv$sysstat 
WHERE NAME = 'observer memory used size' 
GROUP BY SVR_IP, SVR_PORT;

依据的文档名称及段落标题

  • 文档名称:查看内存的使用信息
  • 段落标题:查询 OBServer 节点总内存

方法 2:通过 GV$OB_TENANT_MEMORY 查看租户内存使用情况

如果您希望更精确地了解某个租户(例如租户 ID 为 500)的内存使用情况,可以使用 GV$OB_TENANT_MEMORY 视图。此视图提供了各个租户的内存使用总量。以下是查询示例:

SELECT tenant_id, SUM(hold)/1024/1024/1024 AS HOLD_MEMORY_GB 
FROM oceanbase.GV$OB_TENANT_MEMORY 
WHERE svr_ip = 'xx.xx.xx.xx' AND svr_port = 2882 
GROUP BY tenant_id;

依据的文档名称及段落标题

  • 文档名称:查看内存的使用信息
  • 段落标题:查看各个租户内存使用总量

综合分析

  • 如果您需要的是整个 observer 节点的内存使用总和,推荐使用 gv$sysstat
  • 如果您需要的是特定租户(如租户 ID 为 500)的内存使用情况,推荐使用 GV$OB_TENANT_MEMORY

注意事项

  1. 确保监控已开启,即将配置项 enable_perf_event 的值设置为 True
  2. 如果仍然无法看到租户 ID 为 500 的相关信息,请检查该租户是否真的存在以及是否有权限访问其数据。

希望以上信息能够帮助您准确查看 observer 的内存使用情况!

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

  1. 查看内存的使用信息
  2. 系统视图总览
  3. GV$OB_GROUP_IO_STAT
  4. GV$SYSSTAT