赞
踩
本文主要介绍什么是冻结和转储。
OceanBase 数据库所有版本。
冻结是指将 Active MEMTable 转化为 Frozen MEMTable 的过程。
手动触发:alter system minor freeze;
某个租户的占用内存超过阈值(freeze_trigger_percentage
)后,会自动触发这个租户下所有 MEMTable 的冻结。
select * from __all_virtual_table_mgr where table_id = xxx and table_type = 0;
如果没有指定的 table_id
,可以先查看所有冻结的 MEMTable。
select * from __all_virtual_table_mgr where table_type = 0 and is_active = 0 limit 10;
查看 METable 的情况:
is_active
字段为 1,表示是 Active MEMTable。is_active
字段为 0,表示是 Frozen MEMTable,表示正在等待转储和释放。当内存占用过高时,如果 MEMTable 没有发生冻结,请联系 OceanBase 技术支持进行问题排查。
如果 MEMTable 发生了冻结,但是一直没有转储,日志中有 MEMTable cannot be minor merged now
的 WARN 报错,说明冻结的 MEMTable 不满足转储条件,需要联系 OceanBase 技术支持进行问题排查。
select * from __all_server_event_history where event like "%freeze%";
转储是将内存中 Frozen MEMTable 持久化到磁盘上生成 mini sstable 的过程,在生成 mini sstable 后会释放掉 Frozen MEMTable,是系统释放内存的重要手段。
通过 SQL 查询当前系统中是否有冻结的 MEMTable。
select count(*) from __all_virtual_table_mgr where table_type = 0 and is_active=0;
如果 MEMTable 发生了冻结,通过 select * from __all_virtual_sys_task_status;
查看正在执行中的任务,可能转储正在执行中。
freeze_trigger_percentage
)的时候或执行了 alter system minor freeze;
命令,Active MEMTable 会冻结,变成一个 Frozen MEMTable,后续的写入会写到新创建的 Active MEMTable 上。Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。