暂无图片
OceanBase为什么要有宏块和微块这两级结构?
我来答
分享
暂无图片 匿名用户
OceanBase为什么要有宏块和微块这两级结构?

OceanBase为什么要有宏块和微块这两级结构?

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
O
OceanBase社区传送门

我们知道,传统单机数据库不论是Oracle、MySql、PostgreSql还是SqlServer,它们的存储引擎都是基于Btree的,在Btree中IO的基本单位是Page,Page的长度可以配置,但一般都是定长的,比如说8KB、16KB这样的大小,一旦配置好就不是太好做调整了。定长的最大好处是方便做磁盘管理,不需要处理碎片的问题,但缺点是数据不好做压缩,这也很好理解,就算数据之前是定长的,一压也就成变长的了。
而一些基于LSM Tree的存储引擎,比如OceanBase和Rocksdb,把数据分为SSTable和MemTable,SSTable是静态只读的,非常适合压缩,所以这也是为什么和Oracle/MySql相比,存储相同的数据量OceanBase要消耗的磁盘空间要少得多。
压缩为用户节省了存储成本,但也带来了磁盘空间管理的问题,OceanBase为了在空间管理和数据压缩之间做平衡,才有了宏块-微块的两层管理结构,宏块大小是定长的,长度为2MB,方便做磁盘管理,是数据写的基本单位;宏块内部包含若干个微块,微块大小是变长的,大小可以4KB-512KB不等,方便做压缩,是数据读的最小单位。一般来说微块大小越大,压缩率越高,但相应一次读IO的代价也越大;微块大小越小,压缩率越低,但相应一次读IO的代价也越小。OceanBase默认的微块大小是16KB(当然实际压缩后是变长的,16KB是个大概建议值),基本上能适用大多数的场景了。

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
OB 4.2 启停OB server报错,是否是资源池分配问题,需要怎么看,谢谢!
回答 1
不是大于等于3。是本来一个副本3个节点,只能停一个节点。如果停两个节点,就不足半数了。这里剩余的个数关键在于原集群副本数的一半或一半以上,跟奇数偶数无关。比如3个,可以停1个,剩余2个,10个,可以停
oms_4.2.0-ce.tar.gz 安装问题
回答 1
metadb节点和当前服务器节点时间不同步。clockdiffxx.xx.xx.xx可以测验下。同步方式可参考:https://www.oceanbase.com/docs/commonoceanba
oblogproxy/run/test/log目录下生成大量的日志文件
回答 1
给CDC传递的配置项maxlogfilecount控制单个进程日志文件的数量,默认值为40,即保存10G日志。目前每个进程负责回收自己产生的超过数量限制的日志文件,不同进程(包括进程重启后的新进程)不
OMS高可用部署问题
回答 1
一般使用独立的租户就可以了,OMSdocker镜像本身不带metadb,influxdb没有特殊要求,只要保证OMS容器中可以访问就可以了
安装oms_4.1.1 OMS 社区版控制台admin 账号的默认密码是多少
回答 1
最后解决了root的默认登录密码为aaAA11,然后登录OMS后重置admin用户的密码。
创建一个租户, 创建一个数据库, 授权这个数据库给租户,租户登录看不到这个数据库
回答 1
租户之间数据是隔离的,也没法给另一个租户授权,只能给用户授权
手动初始化OceanBase集群(bootstrap)失败的常见原因有哪些?
回答 1
已采纳
ABCDA、相关目录权限不对或目录空间不足:在初始化过程中,需要确保相关目录具有正确的权限,并且目录空间足够。如果目录权限不正确或空间不足,会导致初始化失败。B、进程启动参数不正确:在启动OceanB
Oceanbase死锁检测问题
回答 1
在4.3版本之前,死锁检测功能还处于不完善的状态(时间和精力投入在其他模块的开发重构上,因而在4.3版本之前没有精力顾及),仅能检测基本的死锁。在您所遇到的这个场景中,死锁检测应该是正常工作的,而之所
oceanbase 性能监控项 查询sql
回答 2
详细信息可以查看oceanbase官方文档:sql性能监控
使用obdumper导出数据报错,No memory or reach tenant memory limit,
回答 1
转储速度跟不上导入速度就这样,扩内存,或者限下速