暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

影响 Benchmark 性能的 OceanBase 常见操作和场景

原创 中天 2023-03-24
290

前言:使用 Benchmark 工具进行测试是一个探索数据库性能的好方法,然而由于大家对 OceanBase 的架构或者特性还不够熟悉,经常会发现使用 Benchmark 工具跑出来的性能数据并不符合预期。本篇文档以此为锲机为大家介绍「影响 Benchmark 性能的 OceanBase 常见操作和场景」,希望能对各位在 Benchmark 测试中提供参考。

一、转储合并

1、转储操作

转储是租户级别的,当一台服务器中一个租户 MemTable 的内存占用超过租户内存上限的一定比例时,就会触发小版本冻结(Minor Freeze)。所谓冻结,就是禁止当前活跃 MemTable 的写入,并同时创建新的空 MemTable 以支持新的写入。 被冻结后的 MemTable 就成为一个静态的数据结构,可以被后台线程读取并转储为 SSTable。

2、合并操作

合并是全局级别的,合并会把当前大版本的 SSTable 和 MemTable 与前一个大版本的全量静态数据进行合并,产生新的全量数据,合并操作包含转储操作。

3、对性能的影响

· 合并转储简单说就是把内存数据刷到磁盘上,存储层统计信息可以更准确,生成的执行计划更优更稳定。

· MemTable SCAN 性能差,合并后 Range 查询会更优。

4、受影响的场景

· 对 TPCH、BMSQL 来说

一般来说 TPC-H、BMSQL 数据量较大,导完数据后大概率会触发转储,此时做合并会有积极影响。

影响分两个方面:

1、Major 合并会将基线 SSTable 与之后转储的增量 SSTable 合并为一个 SSTable,减少跨 SSTable 的查询,提升查询效率 ;

2、同时更新统计信息,使执行计划更稳定。

· 对 Sysbench 来说

Sysbench 一般数据量较小,导完数据后尽量不要发生转储,此时做合并有消极影响。

影响在于: 合并转储将 MemTable 刷到硬盘,多了一个 Major SSTable ,从硬盘操作数据肯定比在 MemTable 要慢( MemTable SCAN 是另外一种情况,不在此讨论。),导致性能下降。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论