OBCP第二章 OB存储引擎高级技术

简介: OBCP第二章 OB存储引擎高级技术

系统架构概念图

OceanBase数据库的存储引擎基于LSM Tree架构

静态基线数据(放在SSTable中)

动态增量数据(放在MemTable中)

本质上是一个基线加增量的存储引擎,跟关系数据 库差别很大,同时也借鉴了部分传统关系数据库存 储引擎的优点。

由于OceanBase 数据库采用基线加增量的设计,一部分数据在基线,一部分在增量,原理上每次查 询都是既要读基线 ,也要读增量 。为此, OceanBase数据库做了很多的优化,尤其是针对单行的优化。

内存分配(一)

OceanBase是支持多租户架构的准内存分布式数据库,对大容量内存的管理和使用提出了很高要求

OceanBase会占据物理服务器的大部分内存并进行统一管理

                                   

OceanBase是支持多租户架构的准内存分布式数据库,对大容量内存的管理和使用提出了很高要求

OceanBase会占据物理服务器的大部分内存并进行统一管理

通过参数设定observer占用的内存上限

memory_limit_percentage

memory_limit

memory_limit的默认单位为MB例如,memory_limit='40G'表示设置OceanBase 数据库进程的使用内存上限40GB。由于默认单位为MB,则memory_limit=40960 与memory_limit='40G'设置的值相同。

如果希望限制运行中的OceanBase数据库的内存大小,可以直接修改 memory_limit的值,使其达到预期。设置后,后台参数Reload线程会使其动态生效,无需重启。但是在设置时,需要保证memory_limit的值小于系统总的值。

参数说明

OceanBase提供两种方式设置observer内存上限:、


按照物理机器总内存的百分比计算observer内存上限:由memory_limit_percentage参数配置


直接设置observer内存上限:由memory_limit参数配置


memory_limit=0时,memory_limit_percentage决定observer内存大小;否则由memory_limit决定observer内存大小


以100GB物理内存的机器为例,下述表格展示了不同配置下机器上的observer

memory_limit_percentage

mermory_limit

Observer内存上限

场景1

80

0

80GB

场景2

80

90GB

90GB

场景1:memory_limit=0,因此由memory_limit_percentage确定observer内存大小,即100GB*80% = 80GB


场景2:memory_limit='90GB',因此observer内存上限就是90GB,memory_limit_percentage参数失效


内存分配(二)

OB系统内部内存

每一个observer都包含多个租户(sys租户 & 非sys租户)的数据,但observer的内存并不是全部分配给租户

observer中有些内存不属于任何租户,属于所有租户共享的资源,称为“系统内部内存”

通过参数设定“系统内部内存”上限 system_memory

租户可用的总内存 “observer内存上限”-“系统内部内存”



内存分配(三)

每个租户内部的内存总体上分为两个部分

不可动态伸缩的内存:MemStore, MemStore用来保存DML产生的增量数据,空间不可被占用

可动态伸缩的内存:KVCache, KVCache空间会被其它众多内存模块复用

           

MemStore

1.大小由参数memstore_limit_percentage决定,表示租户的 MemStore 部分占租户总内存的百分比。


2.默认值为50,即占用租户内存的50%


3.当MemStore内存使用超过freeze_trigger_percentage定义的百分比时(默认70%),触发冻结及后续的转储/合并等行为

KVCache

保存来自SSTable的热数据,提高查询速度

大小可动态伸缩,会被其它各种Cache挤占

内存结构总体结构回顾

相关文章
|
4月前
|
SQL Java Shell
OBCP实践 - OceanBase 执行计划
在OceanBase数据库管理系统中,执行计划(Execution Plan)是数据库优化器基于SQL查询语句生成的一种逻辑表示,它详细说明了数据库如何执行SQL查询,包括选择合适的索引、连接顺序、临时数据处理方式、排序算法等一系列操作步骤,最终目的是为了最有效地获取所需数据并返回给客户端。
123 0
|
12月前
|
SQL 缓存 数据库
OBCP第三章 SQL引擎高级技术-执行计划
OBCP第三章 SQL引擎高级技术-执行计划
284 0
|
12月前
|
存储 数据库 数据安全/隐私保护
OBCP第七章 OB迁移-备份恢复技术架构及操作方法
OBCP第七章 OB迁移-备份恢复技术架构及操作方法
180 0
|
12月前
|
弹性计算 资源调度 负载均衡
OBCP第一章:OB分布式架构高级技术
OBCP第一章:OB分布式架构高级技术
168 0
|
存储 关系型数据库 数据库
从小白到专家 PostgreSQL技术大讲堂 - Part 5:PG数据库结构
从小白到专家 PostgreSQL技术大讲堂 - Part 5:PG数据库结构
315 0
从小白到专家 PostgreSQL技术大讲堂 - Part 5:PG数据库结构
|
Cloud Native 数据库 C++
Meetup 报名 | 从数据库到架构,OceanBase CTO 杨传辉邀你聊透分布式
6 月 19 日(本周六),北京 Meetup 开始报名啦!从数据库到架构,我们来聊透分布式
Meetup 报名 | 从数据库到架构,OceanBase CTO 杨传辉邀你聊透分布式
|
安全 Cloud Native 数据管理
【技术短视频】OceanBase 5mins Tips 第一期来啦:小姐姐带你入门数据库
OceanBase 5mins Tips 第一期上线啦!初心很简单,就是看到一些好的东西,想分享给你们。听高颜值程序媛讲解分布式数据库技术,和“OB小话唠”一起探索奥秘吧~
【技术短视频】OceanBase 5mins Tips 第一期来啦:小姐姐带你入门数据库
|
弹性计算 Cloud Native 数据挖掘
直播预告 | Greenplum原厂内核讲师为你深度解读GP架构设计
为了让大家对Greenplum的内核有更深入的了解,让大家在开发或者是使用Greenplum过程中更加得心应手,今年,和阿里云开发者社区合作,Greenplum中文社区将开展 《Greenplum内核揭秘》系列直播,让你对Greenplum达到更深层的理解。
1360 0
直播预告 |   Greenplum原厂内核讲师为你深度解读GP架构设计
|
架构师 数据库 OceanBase
OceanBase技术直播间开播啦!蚂蚁金服技术专家手把手教你搭建OB数据库~
OceanBase技术直播间正式上线啦! 想了解最前沿的分布式架构/数据库行业趋势? 想与蚂蚁金服技术专家探索OceanBase背后的技术密码? 听干货,看直播,参与互动还能获得讲师的私藏书单和神秘礼物!
Uma
|
存储 缓存 算法
观点 | 阿里资深技术专家:优秀的数据库存储引擎应具备哪些能力?
作为数据库的底盘,一个成熟的存储引擎如何实现高效数据存取?
Uma
12122 0