当前位置: 首页 > news >正文

【OceanBase 系列】—— 什么是冻结和转储

文章出处:OceanBase分布式数据库-海量数据 笔笔算数

本文主要介绍什么是冻结和转储。

适用版本

OceanBase 数据库所有版本。

冻结

冻结是指将 Active MEMTable 转化为 Frozen MEMTable 的过程。

冻结的触发方式

  • 手动触发:alter system minor freeze;

  • 某个租户的占用内存超过阈值(freeze_trigger_percentage)后,会自动触发这个租户下所有 MEMTable 的冻结。

如何看 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 的情况:

  • 当 MEMTable 的 is_active 字段为 1,表示是 Active MEMTable。
  • 当 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 需要满足的转储条件

  • 在 V2.2.x,要求 MEMTable 上没有活跃事务。
  • 在 V3.x,需要检查冻结的状态,事务状态的回填,日志提交等状态。

如果 MEMTable 发生了冻结,通过 select * from __all_virtual_sys_task_status; 查看正在执行中的任务,可能转储正在执行中。

冻结和转储是什么关系

  • 冻结:当 Active MEMTable 占用内存达到阈值(freeze_trigger_percentage)的时候或执行了 alter system minor freeze; 命令,Active MEMTable 会冻结,变成一个 Frozen MEMTable,后续的写入会写到新创建的 Active MEMTable 上。
  • 转储:Frozen MEMTable 转储后会变成磁盘上的 SSTable;可能会同时拿到多个冻结 MEMTable 一起执行转储操作。​所以冻结和转储不是 1:1 的关系,并不是一次冻结后,一定对应一次转储。另外,冻结和转储是独立的,如果有冻结生成了 Frozen MEMTable,才会创建转储任务。
http://www.lryc.cn/news/346824.html

相关文章:

  • 智慧园区能耗管控系统,3D可视化开发都需要哪些技术栈?
  • Spring之推断构造方法源码解析
  • 【计算机网络】计算机网络的定义和分类
  • 天机学堂—学习辅助功能(含场景问答和作业)
  • Stable Diffusion AI绘画
  • linux性能监控之sar
  • react框架对Excel文件进行上传和导出
  • 【前端】-【前端文件操作与文件上传】-【前端接受后端传输文件指南】
  • 【IC前端虚拟项目】验证环境env与base_teat思路与编写
  • 使用Remix部署智能合约到币安链(Remix的操作介绍 币安链合约的部署) 点赞收藏哦
  • 为什么Redis6.0引入了多线程
  • 速盾:高防ip和高防cdn有什么相同点?
  • 设计模式之拦截过滤器模式
  • 【联通支付注册/登录安全分析报告】
  • c++ - 在循环中使用迭代器删除 unordered_set 中的元素
  • 深入了解哈希映射(HashMap)
  • Public Key Retrieval is not allowed
  • iphone进入恢复模式怎么退出?分享2种退出办法!
  • Leetcode 107:二叉树的层次遍历II
  • LNMP一键安装包
  • [机器学习-05] Scikit-Learn机器学习工具包进阶指南:协方差估计和交叉分解功能实战【2024最新】
  • 多线程的情况下 AopContext.currentProxy()切面代理失效问题
  • https://是怎么实现的?
  • Linux无root配置Node,安装nvm
  • 蛋糕店做配送小程序的作用是什么
  • 重写muduo之TcpServer
  • 腾讯云服务器之ssh远程连接登录及转发映射端口实现内网穿透(实现服务器访问本地电脑端口)
  • oracle 9i 行头带有scn的表
  • MySql#MySql安装和配置
  • WEB前端复习——HTML