推荐一个好东西,诊断工具的obdiag的一键洞察,一条命令就搞定了,不用管OB的版本,不用记录SQL
文档:https://www.oceanbase.com/docs/common-obdiag-cn-1000000003242125
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;
select * from gv$ob_tenant_memory; --每个租户内存占用
select * from gv$ob_memory; --注意:4.0之后展示租户级别的内存模块统计信息
注意:sys租户能看到所有租户,包括500租户
如何可以看到 kv cache \ plan cache \sql area 等空间大小
这个是需要计算得出的。
SQL Work Area
工作区内存,是指 SQL 排序等阻塞性算子使用的内存,通过租户系统变量 ob_sql_work_area_percentage
控制,默认值为 5%,即 工作区内存 = 租户内存 * ob_sql_work_area_percentage(默认 5%)
。
如果请求并发量较大,且每个请求占用的工作区内存比较多,可能出现工作区内存不足的报错,经常出现的场景有 union
、sort
、group by
等。上述问题如果出现,可以通过适当调大系统变量ob_sql_work_area_percentage来进行规避。
KVCache
可动态伸缩的 KVCache 会尽量使用除去不可动态伸缩后租户的全部内存,当租户内存满时,会优先从 KVCache 中淘汰未被引用的内存来使用。KVCache主要用于缓存热点数据(Row Cache)、表结构元数据(Schema Cache)等内容,属于共享资源池的一部分。
KVCache 一般不需要配置,特殊场景下可以通过参数控制各种 Cache 的优先级,优先级高的 Cache 比优先级低的 Cache 更容易被保留在 Cache 中。
收藏
查看动态性能视图字典
查看内存相关视图
貌似得到的值不是很准确啊。不能严格控制
阿尔泰山