OceanBase 4.0解读:从TPC-H性能测评看4.0与3.x差异

news2025/6/8 13:32:56

关于作者

肖帆
OceanBase技术专家

OceanBase技术专家,开源生态团队成员。毕业于华中科技大学软件工程专业,从事数据库领域的质量保障工作,曾就职于有赞、网易,参与关系型数据库、缓存数据库、对象存储相关产品的测试开发,目前的工作方向是OceanBase社区版性能测试。


 

2022 年 11 月 3 日, OceanBase 社区版 4.0 Beta 版本正式上线。发布现场的演练测试结果显示,OceanBase 社区版 4.0 在同等硬件环境下,OLTP(联机事务处理)性能是 MySQL 企业版的 1.9 倍,OLAP(联机分析处理)性能是 Greenplum 6.22.1 的 5 到 6 倍。其中,OLAP 性能测试采用 TPC-H(商业智能计算测试),这是国际事务交易处理性能委员会(TPC,Transaction Processing Performance Council)组织制定的用来模拟决策支持类应用的一个测试集,基于 3NF 实现了一个数据仓库,共包含 8 个基本关系,其主要评价指标是各个查询的响应时间,TPC-H 已经成为世界上最为流行的 OLAP 工作负载的 benchmark 测试程序,其测试结果也成为分析型数据库及 HTAP 数据库重要的评测指标。

本文将和大家分享如何在 OceanBase 数据库上进行 TPC-H 测试,介绍OceanBase 4.0 版本的 TPC-H 基准测试方法和性能优化建议。

 

如何进行TPC-H测试

 

▋ OBD一键自动测试

 

OBD(OceanBase Deployer)是 OceanBase 社区版的安装部署工具,作为包管理器,可以用来管理 OceanBase 社区版所有的工具。为了帮助用户更简单、更快速地进行性能测试, OBD 已集成了Sysbench、TPC-C、TPC-H 三种常用测试工具,你可以一键进行全流程的性能测试。测试中过程中 OBD 会根据当前运行环境自动进行参数调优,以跑出最佳的性能。

在完成 OBD 及 OceanBase 社区版安装后,用户可以通过一条简单的命令,就可以完成整个 TPC-H 流程的测试:

obd test tpch obperf --tenant=tpch_mysql -s 100 --remote-tbl-dir=/tmp/tpch100

 

Image
图1 TPC-H 测试演示(obd)

 

OBD 既可以全自动式一键进行 TPC-H 测试,也可以手动设置各种参数来白盒体验测试的各个步骤。下面介绍几个使用 OBD 进行TPC-H 性能测试中,比较重要的参数。

  • **查看流程及操作日志:**如果用户觉得OBD的执行过程相对黑盒,希望了解 OBD 一键测试的过程中,具体进行哪些操作,可以加上’-v’,OBD 将在控制台详细打印出整个操作的流程,包括生成数据、导数、参数调优、合并、执行查询 SQL 等所有的操作日志。
  • **关闭数据文件传输:**TPC-H 需要指定一台 OceanBase 目标服务器作为执行对象。在执行 TPC-H 测试前,OBD 会将测试需要的数据文件传输到指定机器的指定目录下,这些文件可能会比较大,如果用户已经在目标机器上准备好数据文件,可以通过 ‘–dt=true’ 选项关闭传输,OBD 将直接从导数步骤开始进行 TPC-H 测试。
  • **执行查询 SQL:**如果用户已经完成了导数,只是想简单的执行查询SQL,可以加上’–test-only=true’,OBD 会进行参数调优并执行22条查询语句,操作完成后,还会自动将调优参数恢复成系统默认值。如果用户希望手动体验参数调优带来的性能差异,可以再加上’-O 0’,这样 OBD 将不会进行任何参数调优,仅仅执行查询语句。用户可以自由组合各种参数,体验 OceanBase 带来的性能收益。

 

▋ 手动进行 TPC-H 测试

 

如果用户希望通过原始的流程,手动体验整个 TPC-H 的测试,OceanBase 也在官网供了详细的测试流程和步骤。这里主要对 4.0 版本与之前 3.x 版本的步骤差异进行介绍。

  • **参数调整:**OceanBase 4.0 版本引入了向量化和存储下压等新的特性,这些特性对性能提升有重大影响。需要注意的是,在存储下压和向量化设置后,建议用户进行刷新 plan cache 操作,以避免因前期执行 query 导致旧的 plan cache 被命中。
  • **建表语句调整:**由于扫表性能的提升,OceanBase 4.0 版本后不再需要额外加索引。建表时可以将编码格式指定为 CONDENSED,数据会被编码并以 selective encoding 格式保存,有利于提升查询的性能。
  • **合并步骤调整:**4.0 引入了租户级别的合并,执行合并命令需要在对应的租户下执行,或在系统租户下指定合并的租户。相应的合并相关的内部表也进行了调整,用户可以在系统租户下查询 CDB_OB_MAJOR_COMPACTION,获取所有租户合并的全局信息。
  • **手动收集统计信息:**4.0 版本后,合并不再收集统计信息,用户可以手动进行统计信息的收集。在 OceanBase 优化器中,可统计信息有表统计信息(table level statistics)和列统计信息(column level statistics)两种。统计信息收集后,优化器的估算会更准确,生成的执行计划也会更快。

目前 OceanBase 优化器针对统计信息收集提供了两种方式:DMBS_STATS(推荐)、ANALYZE 命令行。使用 OBD 或者 OCP 部署的用户,可以使用自带的 DMBS_STATS 包,通过 call dbms_stats.gather_table_stats 等方式进行统计信息的收集。

如果使用 ANALYZE 的方式,MySQL 租户需要开启 SQL 拓展功能(执行alter system set enable_sql_extension=True)。用户也可以设置_force_parallel_query_dop,进一步提升统计信息收集的执行并发度。

▋ 重要参数解析

  1. 向量化参数:_rowsets_enabled

4.0 增加向量化执行功能(vectorization),使得 OceanBase 具备一次处理多行数据的能力,大幅减少函数调用次数和指令调用 cache miss,提高 SQL 执行器能力。

为了提高 SQL 执行器的灵活性,我们提供了配置项_rowsets_enabled , 控制整个向量化执行的开启关闭。向量化是租户级配置项,在系统租户下执行一定要指定租户名,或者在普通租户下执行。向量化影响所有 SQL 的 RT(响应时间),建议用户在测试时开启。

  1. 存储下压参数:_pushdown_storage_level

随着对 AP 场景不断深入优化,存储层引入多个将过滤、计算下压到底层的新特性,该配置项_pushdown_storage_level 进行控制。当参数设置为 3 时,将开启静态数据快速扫、filter 下推以及聚合下推。存储层将提前对数据进行计算或者过滤,从而减少无效数据的处理并显著提升计算效率。

 

TPC-H测试结果解读

 

以下测试结果的硬件环境,均为 3 台 32C 128G(ecs.g7.8xlarge)节点、每台机器上挂载 3 块 500G ESSD 云盘,测试数据量为 100GB。

▋ 相比上一个版本,OceanBase 4.0 带来了哪些变化?

我们将 OceanBase 社区版 4.0.0、社区版 3.1.0 进行 TPC-H 100GB 测试对比,按照顺序执行 22 条查询 SQL。从数据上来看,整体性能相比于 3.1 版本提升 5 倍。

 

Image

 

▋ 相比开源OLAP数据库,OceanBase 4.0带来了哪些新可能

 

我们将 OceanBase 社区版 4.0.0 与 Greenplum 6.22.1 进行 TPC-H 性能对比,从实际测试数据上可以看到,同等硬件条件下,OceanBase 社区版 4.0 的 AP 能力是Greenplum 6.22 的 5-6 倍,部分场景下性能差异可达到 9 倍。

 

Image
图2 TPC-H 100 GB Results (By Query)

 

Image
图3 TPC-H 100 GB Results (Total Time)

 

写在最后

 

TPC-H 22 条标准 SQL 中,包含了用户数据分析 SQL 里常用的聚合分析、连接查询、表达式计算、子查询等操作,反映了数据库在并发查询、表扫描、filter 下压等方面的通用能力。OceanBase 在 TPC-H 测试中响应时间的大幅降低,体现了OceanBase 在 OLAP 方面能力的不断突破。

从 2010 年开始立项的 OceanBase,一直是原生分布式数据库的信仰者、开拓者。我们希望能够基于“一个系统,一份数据” 为用户提供同时处理交易和实时分析的高性价比能力。 自登顶 TPC-C 榜首,OceanBase 不断稳步迈进提升 OLAP 的能力。 4.0 版本 OceanBase 的实时分析能力,无论是相对 3.x 版本,还是专门的 OLAP 数据库,都有了质的飞跃。 我们希望真正帮助企业解决传统 ETL 带来的数据同步延迟和业务复杂度问题,帮助用户在实际场景中能够同时兼顾到 OLTP 类的事务处理和 OLAP 类的报表分析、业务决策等实时分析能力,让数据库服务和业务应用变得简单。

Reference:

○ TPC-H 基准测试定义

https://www.tpc.org/tpcc/default5.asp

○ TPC-H Standard Specification

https://www.tpc.org/tpc_documents_current_versions/pdf/tpc-h_v3.0.1.pdf

○ OceanBase 4.0 TPC-H 测试文档

https://www.oceanbase.com/docs/community-observer-cn-10000000000900957

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/152084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.net core api调用webserver接口(详细)

这里废话不多说,我就不简述什么事webserver了,相信点进本博客的大佬都是为了解决问题。 .net core 调用webserver的话还挺简单。首先我们先有个.net core api的项目。 1.我们先注入这个HttpClient 这个内置对象,一会要用到。 // 注入HttpC…

Vue Hook Event 解读

前言 Hook Event (钩子事件)相信很多 Vue 开发者都没有使用过,甚至没听过,毕竟 Vue 官方文档中也没有提及。 Vue 提供了一些生命周期钩子函数,供开发者在特定的逻辑点添加额外的处理逻辑,比如: 在组件挂载阶段提供了beforeMount 和…

代码随想录day34

1005. K 次取反后最大化的数组和 题目 给你一个整数数组 nums 和一个整数 k ,按以下方法修改该数组: 选择某个下标 i 并将 nums[i] 替换为 -nums[i] 。 重复这个过程恰好 k 次。可以多次选择同一个下标 i 。 以这种方式修改数组后,返回数…

linux笔记(9):MangoPi-MQ(芒果派麻雀D1s)Tina系统编译烧录

文章目录1.下载相关资料1.1 WhyCan Forum(哇酷开发者社区)提供的sdk1.1.1 SDK解压过程1.2 WhyCan Forum(哇酷开发者社区)提供的补丁1.2.1 补丁包含的文件1.2.2 补丁文件和D1下面的相同文件进行合并1.2.3 引脚PD17被复用,导致LCD变暗,修改设备树2. 编译ti…

【node.js 安装】linux下安装node.js

下面我们介绍安装包安装方法 nodejs官网下载地址1 nodejs官网下载地址2 我们以官网下载地址2打开 直接下载源代码,rz上传到/opt/tools/ 目录下 tar -xJvf node-v18.13.0-linux-x64.tar.xz配置环境变量,vim /etc/profile ,配置内容如下&am…

SFP 收发器居然有那么多种?值得收藏学习

SFP 模块具有广泛的应用范围,可与大部分现代网络配合使用,大多数可以分为四大类:电缆类型、传输范围、传输速率、应用。 一、电缆类型 SFP 模块可以在光纤和铜线上工作,根据光纤的种类,SFP收发器可分为与单模光纤配合…

π122E60 5.0kVrms 200Mbps 双通道数字隔离器 兼容代替Si8622BT-IS

π122E60 5.0kVrms 200Mbps 双通道数字隔离器 兼容代替Si8622BT-IS 具有出色的性能特征和可靠性,整体性能优于光耦和基于其他原理的数字隔离器产品。 产品传输通道间彼此独立,可实现多种传输方向的配置,可实现 5.0kVrms 隔离耐压等级和 DC 到…

Loading 用户体验 - 加载时避免闪烁

🍓 前言 在切换详情页中有这么一个场景,点击上一条,会显示上一条的详情页,同理,点击下一条,会显示下一条的详情页。 伪代码如下所示: 我们定义了一个 switcher 模版, 用户点击上一…

TensorRT部署YOLOv5(03)-TensorRT介绍

TensorRT是本专栏中最重要的内容,绝大多数内容将围绕TensorRT来展开,本文对TensorRT进行一个基本的介绍,让不熟悉TensorRT的读者能够对TensorRT是什么,如何使用它有一个较为全面的认识 Nvidia TensorRT是一个用于Nvidia GPU上高性能机器学习推理的SDK,对开发者屏蔽了模型…

到底什么样的 REST 才是最佳 REST?

说起 REST API,小伙伴们多多少少都有听说过,但是如果让你详细介绍一下什么是 REST,估计会有很多人讲不出来,或者只讲出来其中一部分。 今天松哥就来和大家一起来聊一聊到底什么是 REST,顺便再来看下 Spring HATEOAS 的…

[算法与数据结构]——并查集

目录 1. 概论 定义: 主要构成: 作用: 2. 并查集的现实意义 故事引入: 数据结构的角度来看: 3. find( )函数的定义与实现 故事引入: 实现: 4. join( )函数的定义与实现 故事引入: 实现…

c++11 标准模板(STL)(std::forward_list)(三)

定义于头文件 <forward_list> template< class T, class Allocator std::allocator<T> > class forward_list;(1)(C11 起)namespace pmr { template <class T> using forward_list std::forward_list<T, std::pmr::polymorphic_…

Apollo本地快速部署

GitHub项目地址 Gitee项目地址 Apollo&#xff08;阿波罗&#xff09;是携程框架部门研发的分布式配置中心&#xff0c;能够集中化管理应用不同环境、不同集群的配置&#xff0c;配置修改后能够实时推送到应用端&#xff0c;并且具备规范的权限、流程治理等特性&#xff0c;适…

【计算机网络-数据链路层】介质访问控制协议(MAC协议)

文章目录1 静态划分信道——信道划分 MAC 协议1.1 频分多路复用&#xff08;FDM&#xff09;——“并行”1.2 时分多路复用&#xff08;TDM&#xff09;——“并发”1.2.1 同步时分多路复用1.2.2 异步时分多路复用1.3 波分多路复用&#xff08;WDM&#xff09;1.4 码分多路复用…

数据结构进阶 AVL树

作者&#xff1a;小萌新 专栏&#xff1a;数据结构进阶 作者简介&#xff1a;大二学生 希望能和大家一起进步&#xff01; 本篇博客简介&#xff1a;介绍高阶数据结构:AVL树 AVL树AVL树的概念AVL树节点类的定义AVL树的插入AVL树的旋转左单旋右单旋左右双旋右左单旋AVL树的验证…

多线程适用接口及常见类

日升时奋斗&#xff0c;日落时自省 目录 1、Callable接口 1.1、Callable方式 1.2、非Callable方式 2、JUC&#xff08;java.util.concurrent&#xff09;的常见类 2.1、ReentrantLock 2.2、信号量Semaphore 2.3、CountDownLatch 3、线程安全的集合类 3.1、多线程使用A…

【SpringMVC】使用SpringMVC处理JSON格式的数据

目录 一、前言 二、ResponseBody 三、RequestBody 四、HttpMessageConverter 相关文章&#xff08;可以关注我的SpringMVC专栏&#xff09; SpingMVC专栏SpingMVC专栏一、前言我们在使用Servlet处理前端请求&#xff0c;使用Json格式的数据&#xff0c;通常引入外部提供的一些…

拉伯证券|利好来了,145万手封涨停!低位+低市值“无主”股揭秘

二三四五或将完毕多年“无主”局势。 周末大消息不断。蚂蚁集团1月7日在官网发布关于持续完善公司管理的公告。公告显现&#xff0c;蚂蚁集团调整首要股东投票权&#xff0c;强化与阿里巴巴集团的隔离&#xff0c;阿里巴巴开创人马云抛弃了对蚂蚁集团的实践操控权&#xff0c;蚂…

JavaScript 原型链

文章目录原型链本质 - 对象间的关联关系instanceof 和 isPrototypeOf__proto__的大致实现委托原型链 原型链就是一系列对象的链接。通常来说&#xff0c;这个链接的作用是&#xff1a;如果在对象上没有找到需要的属性或者方法引用&#xff0c;引擎就会继续在[[Prototype]]关联的…

餐饮业数字化提速,OceanBase助海底捞变身“云上捞”

在海底捞火锅智慧餐厅&#xff0c;你会看到忙得团团转的机械臂和传菜机器人&#xff0c;顾客在智能点餐系统上下单&#xff0c;机械臂和传菜机器人就会着手备菜、传菜、上菜&#xff0c;服务人员则有更多时间专心应答顾客的各种询问。这种新模式&#xff0c;也为海底捞家喻户晓…