在OceanBase数据库中,多层转储机制有哪些特点?(多选题)
A、通过分层转储,提高了数据读取的性能
B、通过合并操作,减少了磁盘空间的使用
C、通过减少随机写入,延长了存储设备的寿命
D、通过增加数据版本,提高了数据查询的实时性
看模拟题答案是选的BC,网上一些资料把A也选入,看ppt“采用分层转储,由系统后台任务自动完成增量数据的压缩与合并,提升了转储的效率和数据读取的性能。” 那么应该是有提高数据读取性能,A应该也要选上吧?
在OceanBase数据库中,多层转储机制有哪些特点?(多选题)
A、通过分层转储,提高了数据读取的性能
B、通过合并操作,减少了磁盘空间的使用
C、通过减少随机写入,延长了存储设备的寿命
D、通过增加数据版本,提高了数据查询的实时性
看模拟题答案是选的BC,网上一些资料把A也选入,看ppt“采用分层转储,由系统后台任务自动完成增量数据的压缩与合并,提升了转储的效率和数据读取的性能。” 那么应该是有提高数据读取性能,A应该也要选上吧?
分层转储会降低读的性能,因为分层转储会使读取数据的路径变长,比如读取一条数据,需要去MEM TABLE、MINI SSTABLE 、MINOR SSTABLE、MAJOR SSTABLE 中去查找,查找的层数多了肯定性能就差了,另外分层转储的目的是快速释放memtable中的内存空间,防止内存被写爆,分层转储是在读取和写入之间做了均衡
66
BCD,A如来轩所说是错误的
goody!!
A肯定是不对的
来轩老师总结得比较清楚了,简单说就是分层架构会需要到更多的地方去查数据。合并后缩短了分层导致的路径开销。
因为分层多了性能下降所以得有合并
这个B对吗?我怎么觉得分层转储增加了硬盘空间的使用,分层转储占用的空间肯定比直接从内存一步到位合并到基线数据占用的空间大吧?分层转储主要目的是“小步快跑”,在进行转储合并的时候减少对用户的影响。
答案应该是bc, a答案分层后读取链路变长不利于读取,d答案就不用解释了。b答案虽然分层浪费空间,但是合并会节省空间。c答案转储是顺序写,不是随机写
A的问题是啥,分层转储应该是有利于读的
多层转储将数据分为内存中的活跃数据(如 MemTable)和磁盘上的分层存储(如 SSTable)。系统会定期将增量数据合并为有序的大文件(SSTable),并进行压缩和索引优化。这种分层结构使读取操作能直接定位到有序的磁盘文件,减少随机 IO,同时通过索引快速定位数据,显著提升读取性能。官方 PPT 明确提到 “提升了数据读取的性能”,因此 A 正确。
多层转储的合并过程会将多个小文件(增量数据)合并为大文件,并对数据进行压缩(如行压缩、列压缩),同时清理过期版本数据。这一过程减少了碎片文件和冗余数据,有效降低磁盘空间占用,因此 B 正确。
OceanBase 的转储机制采用 “写时复制” 和批量合并策略,将大量随机小写入转化为批量的顺序大写入(合并到 SSTable)。顺序写入对磁盘(尤其是 SSD)的磨损远小于随机写入,延长了存储设备的寿命,因此 C 正确。
多层转储中,数据版本的增加是为了支持多版本并发控制(MVCC),确保事务隔离性,而非直接提高查询实时性。查询实时性主要依赖内存数据访问和索引优化,与版本数量无关。因此 D 错误。
结论:正确选项为 A、B、C。