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挤占

内存结构总体结构回顾

相关文章
|
存储 数据库 数据安全/隐私保护
OBCP第七章 OB迁移-备份恢复技术架构及操作方法
OBCP第七章 OB迁移-备份恢复技术架构及操作方法
523 0
|
SQL 缓存 关系型数据库
OBCP题目及解析
OBCP题目及解析
1580 0
|
运维 监控 固态存储
OBCP第八章 OB运维、监控与异常处理-日常运维操作
OBCP第八章 OB运维、监控与异常处理-日常运维操作
441 0
|
容灾 数据库 数据中心
单元化架构:解锁异地多活与突破扩展上限的利器
单元化架构:解锁异地多活与突破扩展上限的利器
|
消息中间件 关系型数据库 Kafka
OBCP第七章 OB迁移、备份与恢复-迁移服务
OBCP第七章 OB迁移、备份与恢复-迁移服务
511 0
|
SQL 运维 监控
OBProxy路由策略与使用运维-简介
OBProxy路由策略与使用运维-简介
325 0
|
SQL 存储 关系型数据库
OBCP第四章 SQL调优-分区
OBCP第四章 SQL调优-分区
564 0
|
SQL OceanBase Python
OBCP第五章 分布式事务高级技术-分布式两阶段提交
OBCP第五章 分布式事务高级技术-分布式两阶段提交
420 0
|
存储 缓存 自然语言处理
ElasticSearch原理篇
介绍ElasticSearch的原理、集群等
6303 0
ElasticSearch原理篇
就是要你懂负载均衡--lvs和转发模式
> 本文希望阐述清楚LVS的各种转发模式,以及他们的工作流程和优缺点,同时从网络包的流转原理上解释清楚优缺点的来由,并结合阿里云的slb来说明优缺点。 如果对网络包是怎么流转的不太清楚,推荐先看这篇基础:[程序员的网络知识 -- 一个网络包的旅程](https://www.atatech.org/articles/80573) ,对后面理解LVS的各个转发模式非常有帮助。
14074 0

热门文章

最新文章

下一篇
开通oss服务