如何通过sql查看租户的各个内存占用情况

7 个赞

@论坛小助手

4 个赞

推荐一个好东西,诊断工具的obdiag的一键洞察,一条命令就搞定了,不用管OB的版本,不用记录SQL

文档:https://www.oceanbase.com/docs/common-obdiag-cn-1000000003242125

7 个赞
SELECT tenant_id, CTX_NAME, hold 
          FROM oceanbase.GV$OB_MEMORY 
          WHERE svr_ip = 'xx.xx.xx.xx' 
            AND svr_port = 2882 
            AND tenant_id = 1002 
          GROUP BY CTX_NAME;
4 个赞


select * from gv$ob_tenant_memory; --每个租户内存占用
select * from gv$ob_memory; --注意:4.0之后展示租户级别的内存模块统计信息
注意:sys租户能看到所有租户,包括500租户

5 个赞

如何可以看到 kv cache \ plan cache \sql area 等空间大小

3 个赞

这个是需要计算得出的。

SQL Work Area

工作区内存,是指 SQL 排序等阻塞性算子使用的内存,通过租户系统变量 ob_sql_work_area_percentage 控制,默认值为 5%,即 工作区内存 = 租户内存 * ob_sql_work_area_percentage(默认 5%)

如果请求并发量较大,且每个请求占用的工作区内存比较多,可能出现工作区内存不足的报错,经常出现的场景有 unionsortgroup by 等。上述问题如果出现,可以通过适当调大系统变量ob_sql_work_area_percentage来进行规避。

KVCache

可动态伸缩的 KVCache 会尽量使用除去不可动态伸缩后租户的全部内存,当租户内存满时,会优先从 KVCache 中淘汰未被引用的内存来使用。KVCache主要用于缓存热点数据(Row Cache)、表结构元数据(Schema Cache)等内容,属于共享资源池的一部分。

KVCache 一般不需要配置,特殊场景下可以通过参数控制各种 Cache 的优先级,优先级高的 Cache 比优先级低的 Cache 更容易被保留在 Cache 中。

3 个赞

收藏

2 个赞

查看动态性能视图字典

2 个赞

查看内存相关视图

2 个赞

貌似得到的值不是很准确啊。不能严格控制

1 个赞

阿尔泰山