SmartX 携手 openGauss 社区发布联合方案评测与性能最佳实践

news2024/11/15 11:59:39

近日,北京志凌海纳科技有限公司(以下简称 “SmartX”)携手 openGauss 社区完成了 openGauss 数据库基于 SmartX 超融合平台(SMTX OS)和 SmartX 分布式存储平台(SMTX ZBS)的性能测试和调优。


结果显示,在超融合环境中,openGauss 数据库性能提升了 41% ~ 174%;在分布式存储环境中,其最高值能可达到裸金属服务器 + 本地 NVMe SSD 性能的 110%。

背景


随着信息技术应用与创新转型进入深水区,国产数据库的市场占有率快速增长,openGauss 作为重要的企业级开源关系数据库,其商业版本被广泛的应用于金融、政府、电信、能源等关键行业的核心场景。


为帮助用户更好的了解 openGauss 数据库在自主创新硬件平台及 SmartX 软件平台上的运行表现,SmartX 携手 openGauss 社区围绕 openGauss-5.1.0 企业版在 SmartX 超融合自主创新平台和 SmartX 分布式存自主创新平台(基于鲲鹏芯片的自主创新服务器)上进行了一系列的性能测试和调优,并通过本文分享相关的测试结果与调优思路。

测试方法


本次测试使用 BenchmarkSQL 基于 TPC-C 基准执行测试,以便更客观地评价 openGauss 数据库在 SmartX 自主创新平台上的性能表现。


TPC-C


TPC-C 是一个业界公认的事务处理性能基准测试。它是 Transaction Processing Performance Council(TPC)发布的标准基准测试之一,用于测试在线事务处理(OLTP)系统的性能。TPC-C 测试基于一个虚拟的在线订单处理应用程序,它包括了一系列的事务操作,如客户订单、库存管理、交付处理等。TPC-C 测试结果以“每分钟事务处理量”(TPM)为单位进行度量。


BenchmarkSQL


BenchmarkSQL 是一款可以使用 TPC-C 测试规范来运行基准测试的工具。具体来说,BenchmarkSQL 可以使用 TPC-C 测试规范中定义的事务操作和数据结构,来模拟一个 TPC-C 测试环境,并对数据库系统进行性能测试。因此,BenchmarkSQL 可以被认为是TPC-C 测试的一种实现方式。

SMTX OS 超融合场景测试

1. 测试环境

滑动了解软硬件信息

6a9e0b81677d550289447dc9c464fc08.jpeg 1db39ff670f77f46f8d8c3e5d79fc518.jpeg

*超融合测试场景中,需要留部分 CPU 和内存资源给 SMTX OS 作为开销,因此,openGauss数据库无法独占物理机。

2. 测试模型

超融合场景测试分为两种部署架构:


b7c063f9ff5b8817d4b90deb23002e6f.jpeg

部署架构 1:openGauss 数据库和 BenchmarkSQL 压力程序分别部署在不同的虚拟机(并运行在不同物理服务器节点),BenchmarkSQL 虚拟机的访问请求通过网络发送到 openGauss 数据库虚拟机进行处理。

ae99a3fda5f753479b12230228c940d5.jpeg

部署架构 2:openGauss 数据库和 BenchmarkSQL 部署在同一虚拟机之内(openGauss 所在虚拟机),BenchmarkSQL 虚拟机的访问请求在虚拟机内部直接传送到 openGauss 数据库虚拟机进行处理,没有网络开销。

3. 测试模型


3.1 优化前的初步测试结果


部署架构 1 测试结果:(测试结果为 Neworder 交易,单位:TPM)


a49fb6b4399e7f2cb5fa7d0f082da10d.jpeg


部署架构 2 测试结果:(测试结果为 Neworder 交易,单位:TPM)


f24d181eb3db9608297a693b6318c411.jpeg

3.2 主要调优手段

主机优化

  • BIOS 开启性能模式(CPU 最大性能)

超融合软件优化

  • 开启 boost 模式加速(降低 IO 延时)

  • 开启 RDMA 网络(降低网络延时)

虚拟机优化

  • 开启 vCPU 绑定(不共享 CPU)

  • 利用多个虚拟卷分开存放表空间以及日志文件(提升 IO 并发)

操作系统优化

  • 网络中断参数优化(降低网络延时)

  • 文件系统设置块大小为 8k(与数据库块大小对齐)

  • 关闭 swap 

  • 关闭内存大页

  • 启动参数优化(禁用不必要服务)

数据库参数优化

  • 为数据库进程绑定 numa 拓扑

  • 调整 redo log 大小

  • 开启/关闭异步 IO

  • ……

BenchmarkSQL 优化

  • 创建分表,引入索引(提升数据库并发访问)


3.3 调优前后测试结果对比


本次测试包含多项调优项目,但由于篇幅有限,无法逐一介绍调优效果,因此选择了两项提升幅度较大的调优项目给大家参考:


BenchmarkSQL 优化 - 创建分表


当 BenchmarkSQL 程序填充数据时,它主要通过调用脚本来创建数据库表格。然而,原始脚本只通过创建单一表格来进行填充,这会限制并发访问的优势。为了解决该问题,我们对创建脚本进行了优化,将数据分表存放,让数据库访问时可以获取多个表格的响应。


ce583eb4fb6f9f45aaddaedb1c281f3c.jpeg


基于测试结果,我们可以得出以下结论:


  • 在默认情况下,分表后 tpmC 值有明显提升,增长区间为 17%~116%,且并发度越高,tpmC 值提升越明显。

  • 在数据库启用异步日志后,性能有较大提升(50% 以上),经后台监控查看,初步判断 IO 此时成为主要性能瓶颈。


IO 优化


由于观察到同步日志下,其性能会受到 IO 性能影响。因此我们对现有环境进行 IO 及运算能力的优化:

  • 加虚拟磁盘,分离日志文件和表空间放置在不同的虚拟磁盘。

  • 调整宿主机 profile。

  • vCPU NUMA 绑定。


经调优后,tpmC 性能提升了 16%~ 43%。


43c375ad8559dc41063db4ae3257839b.jpeg


综合调优前后性能对比


在超融合场景下,经过多种手段调优后,tpmC 性能综合提升了 41% ~ 174%,性能提升效果非常明显。


5e16bc76e1d7c7ccb828819a1bbc8f97.jpeg


SMTX ZBS 分布式存储场景测试


1. 测试环境


1.1 使用 iSCSI 方式时,计算端配置情况


377acab2569f96b1eaf2d95041280167.png


1.2 使用 NVMe-oF 方式时,计算端配置情况


a51848141be14c5267bf345534d06471.jpeg

*分离式部署场景中, openguass 数据库直接部署在物理机上,可完全独占这台服务器的所有资源。


2. 测试模型


分离式部署场景测试分为两种部署架构:


de4cacdb89fa4fe786dbaadcce9309e1.jpeg

部署架构 1:openGauss 数据库服务器通过 iSCSI 协议连接 SMTX ZBS 分布式存储,这是一种连接分布式存储最常用(最通用)的协议,由于 iSCSI 协议性能开销较大,因此 IO 延时较高。


242f1fb829d76c1ddddad7c5c7605360.jpeg

部署架构 2:为应对 IO 延时要求苛刻的数据库场景,SMTX ZBS 提供了高性能、低延时的 NVMe-oF 接入协议。openGauss 数据库服务器通过 NVMe-oF 协议接入存储可有效降低 IO 延时。


3. 测试内容


3.1 NVMe-oF 接入协议对比 iSCSI 协议的性能提升


在 SMTX ZBS 分离部署场景下沿用了前面章节 SMTX OS 超融合场景的调优手段,并额外增加了索引的优化,性能测试结果如下:


滑动了解不同 warehose 下,tpmC 对比:

e3e2ed37fd3cdc86bcbec40446b00505.jpeg 3a282fc0b06282b28997414c034bba50.jpeg 03447de5b505d0bfc2f4856381072a61.jpeg


基于测试结果,我们可以得出以下结论:


  • 采用 NVMe-oF 接入协议,相比 iSCSI 接入协议在所有场景下均能获得性能提升,tpmC 性能提升比例在 9% ~ 25% 之间。

3.2 NVMe-oF 接入 ZBS 分布式存储对比本地 NVMe SSD 的测试结果


为帮助用户更好的理解测试结果,我们还增加了裸金属服务器 + 本地 NVMe SSD 的性能测试,其采用本地 NVMe SSD 裸盘格式化后用作数据库的存储空间进行测试。


其中,BenchmarkSQL 程序也部署在 openGauss 数据库所在的裸金属服务器中。


众所周知,NVMe 裸盘的 IO 性能是非常优秀的,因为我们以此模型为参照物,对比 SMTX ZBS 分布式存储在 NVMe-oF 接入协议下的性能表现,其测试结果如下:


滑动了解不同 warehose 下,tpmC 对比:

813afdf1f4565ae3f9815703b6aa334c.jpeg 26a91fd600eaabf6b7fc29fff44b5935.jpeg f5bd739d29a00a789a05f15e380e3638.jpeg


基于测试结果,我们可以得出以下结论:


  • 大部分场景下,裸金属服务器 +ZBS NVMe-oF 协议接入的性能与裸金属服务器 + 本地 NVMe SSD 持平甚至略高。

  • 多个测试模型中,裸金属服务器 +ZBS NVMe-oF 协议接入 tpmC 值最低也可以达到裸金属服务器 + 本地 NVMe SSD 性能的 73%,最高值能达到裸金属服务器 + 本地 NVMe SSD 性能的 110%。


本次测试为双方用户展示了 openGauss 数据库在 SmartX 平台上的真实表现,为用户提供了更多选择和参考。

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

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

相关文章

【C++】模板初阶 | 泛型编程 | 函数模板 | 类模板

目录 1. 泛型编程 2. 函数模板 2.1 函数模板概念 2.2 函数模板格式 2.3 函数模板的原理 2.4 函数模板的实例化 2.5 模板参数的匹配原则 3. 类模板 3.1 类模板的定义格式 3.2 类模板的实例化 【本节目标】 1. 泛型编程 2. 函数模板 3. 类模板 1. 泛型编程 如何实现一…

C语言调试

目录 一.Debug和Release介绍 二.Windows环境调试介绍 三.窗口介绍 (1)自动窗口和局部变量窗口 (2)监视窗口 (3)调用堆栈 (4)查看汇编信息 (5)查看寄存…

Java零基础 - 算术运算符

哈喽,各位小伙伴们,你们好呀,我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。 我是一名后…

Win11网络连接选项和蓝牙选项突然消失的解决办法

在设置或者开始栏里搜索“网络重置” 打开网络重置: 然后点击立即重置,之后按照系统提示操作即可

Mybatis总结--传参二

#叫做占位符 Mybatis是封装的JDBC 增强版 内部还是用的jdbc 每遇到一个#号 这里就会变为?占位符 一个#{}就是对应一个问号 一个占位符 用这个对象执行sql语句没有sql注入的风险 八、多个参数-使用Param 当 Dao 接口方法有多个参数,需要通过名称使…

猫头虎分享已解决Bug || 超时错误:TimeoutError: Request timed out after 30000ms.

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通鸿蒙》 …

进程1——进程与线程——day09

今天,主要讲一下进程的一些基本概念和一些接口 首先是进程的基本概念: 1.进程: 程序:存放在外存中的一段数据组成的文件 进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消亡 2.进程相关命令: 1.top 动态…

51单片机项目(34)——基于51单片机和esp8266的智能农业检测系统

1.设计要求 可以检测农业大棚中的温度、湿度、气压、光照等信息,可以检测土壤湿度,可以判断当前有没有下雨,能够将相关数据显示在OLED屏幕上。同时,使用esp8266wifi模块,将上述所有信息发送到手机APP显示。当温度、湿度…

SQL-Labs46关order by注入姿势

君衍. 四十六关 ORDER BY数字型注入1、源码分析2、rand()盲注3、if语句盲注4、时间盲注5、报错注入6、Limit注入7、盲注脚本 四十六关 ORDER BY数字型注入 请求方式注入类型拼接方式GET报错、布尔盲注、延时盲注ORDER BY $id 我们直接可以从界面中得知传参的参数为SORT&#x…

可变参数、Collections类

一、可变参数 定义:是一种特殊的形参,定义在方法、构造器的形参列表里 格式:数据类型...参数名称 特点:可以不传数据,也可以传一个或者多个数据给它,也可以传一个数组 好处:可以灵活接收数据…

刷题日记-Day2- Leedcode-977. 有序数组的平方,209. 长度最小的子数组,59. 螺旋矩阵 II-Python实现

刷题日记Day2 977 有序数组的平方209. 长度最小的子数组59. 螺旋矩阵 II 977 有序数组的平方 链接:https://leetcode.cn/problems/squares-of-a-sorted-array/description/ 给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组…

真Unity3D编辑器Editor二次开发

IMGUI Editor Label 改变颜色 分享一个很神奇的颜色 一开始这么写&#xff0c;以为不行的&#xff0c; private void OnGUI()(){GUILayout.Label("<colorred>name:</color>ffdasilufoi");//。。。。 } 结果这么写又好了&#xff0c; private GUIStyle m…

Vivado MIG ip核使用教程

Step 1 在ip catalog中搜索mig ip核并打开&#xff0c;检查硬件配置 Step 2 Step 3 选择对其他芯片类型的兼容性&#xff0c;若无此方面需求&#xff0c;可直接点击next Step 4 选择存储器类型 Step 5 配置DDR3芯片工作频率、用户时钟、mig ip核输入时钟、DDR3芯片类型…

数据结构-Queue队列

一,队列的简单认识 队列也是一种线性数据结构,与栈不同的是,它只能从一端添加元素,从另一端取出元素.定义了一端,另一端也就确定了. (当然还有一个特殊的双向队列LinkedList除外,它既可以从队首添加元素,也可以移除元素,队尾也是一样的,既可以添加元素,也可以移除元素) 二,队…

AI误导游戏——LLM的危险幻觉

在当今科技高速发展的时代&#xff0c;人工智能&#xff08;AI&#xff09;已成为日常生活和工作中不可或缺的一部分。特别是大语言模型&#xff08;LLM&#xff09;如GPT-4等&#xff0c;它们的智能表现令人惊叹&#xff0c;广泛应用于文本生成、语言翻译、情感分析等多个领域…

【rust】9、reqwest 调用 http

文章目录 一、client1.1 post reqwest 实现的 http server 和 client 用 https://github.com/seanmonstar/reqwest cargo add reqwest -F json cargo add tokio -F full一、client 1.1 post async fn http_post<T: Serialize>(addr: String, body: T) -> Result<…

jQuery 基础、选择器和筛选器

【一】JQuery基础 【1】什么时Jquery &#xff08;1&#xff09;定义 jQuery是一个流行的JavaScript库&#xff0c;旨在简化JavaScript编程和处理HTML文档的任务。它提供了一组易于使用的功能和方法&#xff0c;可以加快开发速度并提高跨浏览器兼容性。一款轻量级的JS框架 …

【Java程序设计】【C00285】基于Springboot的游戏分享网站(有论文)

基于Springboot的游戏分享网站&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的游戏分享网站 本系统分为系统功能模块、管理员功能模块以及用户功能模块。 系统功能模块&#xff1a;在网站首页可以查看首页、游戏…

element 季度选择器组件

效果图&#xff1a; 回传给父组件的值&#xff1a; 季度选择器组件代码&#xff1a; <template><el-form><el-form-item><markclass"mark"v-show"showSeason"click.stop"showSeason false"></mark><el-input…

web安全学习笔记【15】——信息打点(5)

信息打点-CDN绕过&业务部署&漏洞回链&接口探针&全网扫描&反向邮件 #知识点&#xff1a; 1、业务资产-应用类型分类 2、Web单域名获取-接口查询 3、Web子域名获取-解析枚举 4、Web架构资产-平台指纹识别 ------------------------------------ 1、开源-CMS指…