SmartX 携手 openGauss 社区发布联合方案评测与性能最佳实践 | 附优化方法与测试数据

近日,北京志凌海纳科技有限公司(以下简称 “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. 测试环境

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

2. 测试模型

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

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

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

3. 测试模型

3.1 优化前的初步测试结果

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

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

3.2 主要调优手段

主机优化

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

超融合软件优化

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

虚拟机优化

  • 开启 vCPU 绑定(不共享 CPU)
  • 利用多个虚拟卷分开存放表空间以及日志文件(提升 IO 并发)

操作系统优化

  • 网络中断参数优化(降低网络延时)
  • 文件系统设置块大小为 8k(与数据库块大小对齐)
  • 关闭 swap 
  • 关闭内存大页
  • 启动参数优化(禁用不必要服务)

数据库参数优化

  • 为数据库进程绑定 numa 拓扑
  • 调整 redo log 大小
  • 开启/关闭异步 IO
  • ……

BenchmarkSQL 优化

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

3.3 调优前后测试结果对比

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

BenchmarkSQL 优化 – 创建分表

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

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

  • 在默认情况下,分表后 tpmC 值有明显提升,增长区间为 17%~116%,且并发度越高,tpmC 值提升越明显。
  • 在数据库启用异步日志后,性能有较大提升(50% 以上),经后台监控查看,初步判断 IO 此时成为主要性能瓶颈。

IO 优化

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

  • 加虚拟磁盘,分离日志文件和表空间放置在不同的虚拟磁盘。
  • 调整宿主机 profile。
  • vCPU NUMA 绑定。

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

综合调优前后性能对比

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

SMTX ZBS 分布式存储场景测试

1. 测试环境

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

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

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

2. 测试模型

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

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

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

3. 测试内容

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

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

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

  • 采用 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 接入协议下的性能表现,其测试结果如下:

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

  • 大部分场景下,裸金属服务器 +ZBS NVMe-oF 协议接入的性能与裸金属服务器 + 本地 NVMe SSD 持平甚至略高。
  • 多个测试模型中,裸金属服务器 +ZBS NVMe-oF 协议接入 tpmC 值最低也可以达到裸金属服务器 + 本地 NVMe SSD 性能的 73%,最高值能达到裸金属服务器 + 本地 NVMe SSD 性能的 110%。

本次测试为双方用户展示了 openGauss 数据库在 SmartX 平台上的真实表现,为用户提供了更多选择和参考。欲了解更多 SmartX 超融合在不同数据库场景下的性能表现,请阅读:性能接近翻倍!利用 Boost 技术优化 SmartX 超融合信创平台承载达梦数据库性能详解。

下载《SmartX 超融合技术原理与特性解析合集(含 VMware 对比)》,进一步了解 SmartX 如何通过技术创新提升基础架构性能与可靠性。

超融合技术原理与特性解析合集(一)虚拟化与存储

超融合技术原理与特性解析合集(二)管理与运维

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

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

相关文章

Python-sklearn-LinearRegression

目录 1 手动实现/使用sklearn实现线性回归训练 1.1 单特征线性回归(One Feature) 1.2 多特征线性回归(Multiple Features) 1.3 多项式线性回归(Polynomial) 1 手动实现/使用sklearn实现线性回归训练 1…

numpyNaN

numpyNaN nan(NAN,Nan):not a number表示不是一个数字 什么时候numpy中会出现nan: 当我们读取本地的文件为float的时候,如果有缺失,就会出现nan当做了一个不合适的计算的时候(比如无穷大(inf)减去无穷大) inf(-inf,inf):infinity,inf表示…

JavaScript-1 (forEach方法)

--输出语句 document.write(文档输出内容) alert(警告对话框) console.log(控制台打印) --输入语句 prompt(请输入姓名:) JavaScript的书写位置 1.内联JavaScript <button onclick"alert(hello world!)">点击我</button> <button> 标签: …

flowable的java class task,也叫服务任务

源码地址12级程序猿-新年正当红/flowable-ui和服务任务 启动flowable-ui-app 浏览器输入下面的地址 http://localhost:8080/flowable-ui/#/ 在服务任务这里设置java类的路径 com.dmg.flowabledemo.task.MyServiceTask 当请假任务完成之后&#xff0c;自动触发这个服务任务…

Android开发社招面试总结,Android程序员面试必备的知识点

导语 学历永远是横在我们进人大厂的一道门槛&#xff0c;好像无论怎么努力&#xff0c;总能被那些985,211 按在地上摩擦&#xff01; 不仅要被“他们”看不起&#xff0c;在HR挑选简历&#xff0c;学历这块就直接被刷下去了&#xff0c;连证明自己的机会也没有&#xff0c;学…

synchronized 五连问

什么是synchronized? synchronized 是Java中用于实现线程同步的关键字&#xff0c;它可以确保多个线程在访问共享资源时不会发生冲突。 synchronized 关键字的一些主要用法? 修饰方法&#xff1a;当 synchronized 用于修饰方法时&#xff0c;它会将该方法变成同步方法&#…

关于Java并发多线程的一点思考

写在开头 在过去的2023年双11活动中&#xff0c;天猫的累计访问人次达到了8亿&#xff0c;京东超60个品牌销售破10亿&#xff0c;直播观看人数3.0亿人次&#xff0c;订单支付频率1分钟之内可达百万级峰值&#xff0c;这样的瞬间高并发活动&#xff0c;给服务端带来的冲击可想而…

什么职业适合报考CISP证书

CISP认证是当前中国信息安全行业中最主流、最专业的证书之一&#xff0c;具有很高的含金量。 那么&#xff0c;CISP认证的含金量高吗?哪些职位需要获得CISP证书?作为国家认证证书&#xff0c;CISP认证&#xff0c;当然&#xff0c;含金量&#xff0c;到底是多么高的含金量&a…

HplusAdmin ASP.NET基本权限管理系统

HplusAdmin 介绍 一套ASP.NET WebForm(不用控件) hplusasp.netsqlserver 基本权限管理系统 http://hplus.baocaige.top 暂不开源&#xff0c;需要的滴滴或者留下邮箱&#xff01;&#xff01;&#xff01; 账号 普通账号 账号&#xff1a;user 密码&#xff1a;Aa123456普…

运维随录实战(10)之上传Maven私服

1,通过第三方仓库(sonatype ossrh)上传,首先在官网注册账号: Loading... 2,新建issue 3,按照评论要求进行代码建立等 4,安装gpg,地址:Gpg4win - Download Gpg4win 相关命令: gpg --version 查看版本(是否安装成功) gpg --gen-key 生成公钥 gpg --keyserver hk…

swagger在java中的基本使用

自动生成接口文档&#xff0c;和在线接口测试的框架。 导入依赖 <!-- knife4j对swagger进行一个封装--><dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><versi…

UE Snap01

获取指定文件目录下的所有文件 TArray<FString> LoadFilesPathFromDir(const FString& DirPath) {IFileManager& FileManager IFileManager::Get();TArray<FString> FilesPath;if (FileManager.DirectoryExists(*DirPath)){FileManager.FindFiles(FilesP…

阻塞队列、生产者消费者模型、阻塞队列的模拟实现等干货

文章目录 &#x1f490;生产者消费者模型&#x1f490;模拟实现阻塞队列&#x1f4a1;注意点一&#x1f4a1;注意点二 阻塞队列是一种“特殊”的数据结构&#xff0c;但是也遵循队列的“先进先出”特性&#xff0c;它的特殊在于&#xff1a; 阻塞队列的两个特性&#xff1a; 1…

【C++入门】引用

目录 6.引用 6.1引用概念 6.2引用的写法 6.3引用的特性 6.4常引用 6.5引用的使用场景 6.5.1引用做参数 6.5.2引用做返回值❗❗ &#x1f387;值做返回值 &#x1f387;引用做返回值 &#x1f387;引用在顺序表做返回值 6.5.3传值、传引用效率比较(参数&#xff0…

【OpenGL的着色器03】内置变量和函数(gl_Position等)

目录 一、说明 二、着色器的变量 2.1 着色器变量 2.2 着色器内置变量 三、最常见内置变量使用范例 3.1 常见着色器变量 3.2 示例1&#xff1a; gl_PointSize 3.3 示例2&#xff1a;gl_Position 3.4 gl_FragColor 3.5 渲染点片元坐标gl_PointCoord 3.6 gl_PointCoo…

Android Gradle开发与应用 (三) : Groovy语法概念与闭包

1. Groovy介绍 Groovy是一种基于Java平台的动态编程语言&#xff0c;与Java是完全兼容&#xff0c;除此之外有很多的语法糖来方便我们开发。Groovy代码能够直接运行在Java虚拟机&#xff08;JVM&#xff09;上&#xff0c;也可以被编译成Java字节码文件。 以下是Groovy的一些…

图像处理与视觉感知---期末复习重点(1)

文章目录 一、概述二、图像处理基础2.1 视觉感知要素2.2 像素间的一些基本关系2.2.1 相邻像素2.2.2 连通性2.2.3 距离度量 2.3 基本坐标变换2.4 空间变换与灰度值 一、概述 1. 图像的概念及分类。  图像是用各种观测系统以不同形式和手段观测客观世界而获得的、可以直接或间接…

nodejs版本管理工具nvm安装和环境变量配置

1、下载nvm.exe https://github.com/coreybutler/nvm-windows/releases2、安装 1.在D盘根目录新建一个dev文件夹&#xff0c;在dev里面再新建一个nodejs。 2.双击下载好的nvm.exe 修改文件路径&#xff0c;且路径中不能有中文 3.安装完成后在D:\dev\nvm打开settings.txt&…

大模型交互-超拟人合成

1、超拟人合成&#xff1a;将文字转化为自然流畅的人声&#xff0c;在实时语音合成的基础上&#xff0c;精准模拟人类的副语言现象&#xff0c;如呼吸、叹气、语速变化等&#xff0c;使得语音不仅流畅自然&#xff0c;更富有情感和生命力。 2、唤醒的持久运行--->合成能力加…

kerberos学习系列一:原理

1、简介 Kerberos 一词来源于古希腊神话中的 Cerberus —— 守护地狱之门的三头犬。 Kerberos 是一种基于加密 Ticket 的身份认证协议。Kerberos 主要由三个部分组成&#xff1a;Key Distribution Center (即KDC)、Client 和 Service。 优势&#xff1a; 密码无需进行网络传…