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分布式架构高级技术
195 0
|
存储 运维 关系型数据库
MySQL官方特供649页顶级笔记,凝聚社区力量深入技术内幕
但凡有职场经验的兄弟都知道,大厂的面试真是一言难尽,不光看你面试时的临场发挥能力,还要分N次考你对公司业务核心技术的熟悉度。
|
运维 关系型数据库 MySQL
阿里大牛的595页MySQL笔记,透彻即系数据库、架构与运维
数据库运维的变革,经历从手工造到脚本化、系统化、平台化、智能化的转变,逐步实现DBA对数据库的规范化、自动化、自助化、可视化、智能化、服务化管理,从而保障数据库的安全、稳定、高效运行。
|
运维 关系型数据库 MySQL
MySQL DBA的必备参考,两位数据库资深专家呕心沥血之作
互联网发展至今,开源软件已经深入人心,并且受到广泛的支持和响应,很多公司在使用开源软件的同时也输出了一些好的开源产品。MySQL 作为当今世界.上最受欢迎的开源数据库产品之一,在很多互联网企业里起到了不可或缺的作用。由于MySQL的诸多特性,比如开源免费、灵活、轻量简单且越来越多的企业开始使用MySQL,在业界诞生了一大批相关从业者,他们研究MySQL的原理,探讨MySQL的架构,完善MySQL的运维,丰富MySQL的工具,促进MySQL的发展,我们称这些人为MySQL DBA,而本人也是其中之一,深感荣幸。
|
存储 算法 数据库
CMU 15-445 数据库课程第五课文字版 - 缓冲池(上)
CMU 15-445 数据库课程第五课文字版 - 缓冲池(上)
CMU 15-445 数据库课程第五课文字版 - 缓冲池(上)
|
存储 SQL 关系型数据库
MD牛!阿里多位资深MySQL专家撰写的437页MySQL技术内幕分享手册
MySQL数据库的体系结构 MySQL由以下几部分组成: 连接池组件 管理服务和工具组件 SQL接口组件 查询分析器组件 优化器组件 缓冲(Cache)组件 插件式存储引擎 物理文件
97 0
阿里大牛撰写"星耀级"MySQL DBA工作笔记!颠覆我对数据库的认知
MySQL是开源数据库方向的典型代表,它拥有成熟的生态体系,同时在可靠性、性能、易用性方面表现出色,它的发展历程见证了互联网的兴衰与成长。 在 DeveloperWeek 上曾发起一个调查,超过 3/5 的受访者使用 SQL,其中MySQL 以 38.9% 的使用率高居榜首,其后依次是 MongoDB(24.6%)、PostgreSQL(17.4%)、Redis(8.4%)和 Cassandra(3.0%)。毫无疑问,以MySQL为主的开源技术生态正变得越来越流行。同样的,对我们掌握MySQL也迫在眉睫。那么,接下来,就让小轩带领大家来深入了解MySQL吧!
|
SQL 前端开发 关系型数据库
开源分布式数据库PolarDB-X源码解读——PolarDB-X源码解读(十一):事务的一生
开源分布式数据库PolarDB-X源码解读——PolarDB-X源码解读(十一):事务的一生
232 0
|
存储 缓存 自然语言处理
CMU 15-445 数据库课程第五课文字版 - 缓冲池(下)
CMU 15-445 数据库课程第五课文字版 - 缓冲池(下)
CMU 15-445 数据库课程第五课文字版 - 缓冲池(下)
|
存储 缓存 数据库
CMU 15-445 数据库课程第五课文字版 - 缓冲池(中)
CMU 15-445 数据库课程第五课文字版 - 缓冲池(中)
CMU 15-445 数据库课程第五课文字版 - 缓冲池(中)