测试环境:1-1-1 OceanBase 企业版3.2.4.4
查看租户的 Context 和 Modudle 内存
SELECT
tenant_id,
svr_ip,
ctx_id,
ctx_name,
mod_name,
count,
round(HOLD / 1024 / 1024, 2) hold_mb,
round(used / 1024 / 1024, 2) used_mb
FROM
oceanbase.__all_virtual_memory_info
WHERE
tenant_id = 1
ORDER BY used DESC
LIMIT 10;
查看租户 memstore 内存使用情况
V3 版本用视图 gv$memstoreV4 该视图变成了gv$ob_memstore
SELECT
tenant_id,
ip ,
round(active / 1024 / 1024, 2) active_mb,
round(total / 1024 / 1024, 2) total_mb,
round(freeze_trigger / 1024 / 1024, 2 ) freeze_trg_mb,
round(mem_limit / 1024 / 1024, 2) mem_limit_mb,
freeze_cnt
FROM
oceanbase.gv$memstore m
WHERE
m.tenant_id = 1
ORDER BY ip ;
查看表在 MemStore 中内存占用
V3 版本用视图 gv$memstore_info
V4 该视图变成了gv$ob_memstore_info
SELECT
ip,
t.table_name,
usec_to_time(base_version) base_version_time,
round(used / 1024 / 1024, 1) AS used_mb,
hash_items,
btree_items,
is_active
FROM
gv$memstore_info m
JOIN gv$table t ON
(m.tenant_id = t.tenant_id
AND m.table_id = t.table_id)
WHERE
t.tenant_id = 1
AND t.database_name IN ('test')
ORDER BY
m.ip,
m.base_version DESC ;
每个表的分区在的转储和合并历史
SELECT
m.svr_ip,
t.table_name,
TYPE,
ACTION,
usec_to_time(version) version,
start_time,
end_time ,
macro_block_count blocks
FROM
gv$merge_info m
JOIN gv$table t ON
(m.tenant_id = t.tenant_id
AND m.table_id = t.table_id)
WHERE
m.tenant_id = 1
AND t.table_name IN ('test_table')
AND t.database_name = 'test'
ORDER BY
t.table_name,
start_time DESC ;
SELECT
usec_to_time(request_time) req_time,
tenant_name,
svr_ip,
user_name,
db_name,
ret_code,
trace_id
FROM
gv$sql_audit
WHERE
tenant_id = 1
AND user_name = 'root'
AND ret_code IN (-4030,-4013)
ORDER BY
request_id DESC
LIMIT 10
;
OB 的内存 Context 中,除了 MemStore 外,KVCache、PlanCache、WorkArea 等内存都可以通过视图查看
SELECT
tenant_id,
svr_ip,
cache_name,
priority,
round(cache_size / 1024 / 1024, 2) cache_mb,
round(cache_store_size / 1024 / 1024, 2) cache_store_mb,
round(cache_map_size / 1024 / 1024, 2) cache_map_mb,
kv_cnt,
hit_ratio
FROM
oceanbase.__all_virtual_kvcache_info
WHERE
tenant_id = 1
ORDER BY total_hit_cnt DESC ;
SELECT
tenant_id,
svr_ip,
sql_num,
round(mem_used / 1024 / 1024, 2) mem_used_mb,
round(mem_hold / 1024 / 1024, 2) mem_hold_mb,
round(mem_limit / 1024 / 1024, 2) mem_limit_mb
FROM
oceanbase.gv$plan_cache_stat
WHERE
tenant_id = 1
ORDER BY
mem_used DESC
;
本文章参考自 OBCE V3 培训试验:内存管理分享 (qq.com) 文章写的很好故在自己的集群上做了测试。