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

本文主要是介绍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. 测试环境

滑动了解软硬件信息

ac510d369b6f79c64039a1543f4a100e.jpeg e9ba02dd05b93da219620b530a681db5.jpeg

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

2. 测试模型

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


9efc898e28c34d258f98a1529abdfef9.jpeg

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

0a6df8fe5e19fed31f9ac47e6b842ba1.jpeg

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

3. 测试模型


3.1 优化前的初步测试结果


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


f2f8ea61d9eab047c7e3698dc7246246.jpeg


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


8979be33d64d37ce9496460915d28913.jpeg

3.2 主要调优手段

主机优化

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

超融合软件优化

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

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

虚拟机优化

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

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

操作系统优化

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

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

  • 关闭 swap 

  • 关闭内存大页

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

数据库参数优化

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

  • 调整 redo log 大小

  • 开启/关闭异步 IO

  • ……

BenchmarkSQL 优化

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


3.3 调优前后测试结果对比


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


BenchmarkSQL 优化 - 创建分表


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


7355260148afb1cb5075c87c334c7c85.jpeg


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


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

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


IO 优化


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

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

  • 调整宿主机 profile。

  • vCPU NUMA 绑定。


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


f737f725d22ddcc48eaf445d12d06d83.jpeg


综合调优前后性能对比


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


6375a2ed89f6c754add04f106a24f1e5.jpeg


SMTX ZBS 分布式存储场景测试


1. 测试环境


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


79a2e801e445e84a149439d2c4325033.jpeg


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


585a66b1258ea89be545a800f9c5bdc6.jpeg

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


2. 测试模型


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


e4bef9afb47b23ad7aea6a6cadaeabcc.jpeg

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


f03776d0dbaf47f9a75ab9f87769a98a.jpeg

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


3. 测试内容


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


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


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

e0a9691c31f5ac922f563d3b0495857f.jpeg ea7f7249a7706fe983822ed13a3e543d.jpeg d1bb7528d20d7acad39b69e323238159.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 对比:

86086aa5330299ab74c64aba7fbd15b1.jpeg bb037969906e5f63d86233f854c33d6b.jpeg d5b0f8cd3233a4ae2fe335331fb99591.jpeg


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


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

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


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

这篇关于SmartX 携手 openGauss 社区发布联合方案评测与性能最佳实践的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773830

相关文章

MySQL分表自动化创建的实现方案

《MySQL分表自动化创建的实现方案》在数据库应用场景中,随着数据量的不断增长,单表存储数据可能会面临性能瓶颈,例如查询、插入、更新等操作的效率会逐渐降低,分表是一种有效的优化策略,它将数据分散存储在... 目录一、项目目的二、实现过程(一)mysql 事件调度器结合存储过程方式1. 开启事件调度器2. 创

SpringBoot项目中Maven剔除无用Jar引用的最佳实践

《SpringBoot项目中Maven剔除无用Jar引用的最佳实践》在SpringBoot项目开发中,Maven是最常用的构建工具之一,通过Maven,我们可以轻松地管理项目所需的依赖,而,... 目录1、引言2、Maven 依赖管理的基础概念2.1 什么是 Maven 依赖2.2 Maven 的依赖传递机

Oracle查询优化之高效实现仅查询前10条记录的方法与实践

《Oracle查询优化之高效实现仅查询前10条记录的方法与实践》:本文主要介绍Oracle查询优化之高效实现仅查询前10条记录的相关资料,包括使用ROWNUM、ROW_NUMBER()函数、FET... 目录1. 使用 ROWNUM 查询2. 使用 ROW_NUMBER() 函数3. 使用 FETCH FI

在C#中获取端口号与系统信息的高效实践

《在C#中获取端口号与系统信息的高效实践》在现代软件开发中,尤其是系统管理、运维、监控和性能优化等场景中,了解计算机硬件和网络的状态至关重要,C#作为一种广泛应用的编程语言,提供了丰富的API来帮助开... 目录引言1. 获取端口号信息1.1 获取活动的 TCP 和 UDP 连接说明:应用场景:2. 获取硬

Java内存泄漏问题的排查、优化与最佳实践

《Java内存泄漏问题的排查、优化与最佳实践》在Java开发中,内存泄漏是一个常见且令人头疼的问题,内存泄漏指的是程序在运行过程中,已经不再使用的对象没有被及时释放,从而导致内存占用不断增加,最终... 目录引言1. 什么是内存泄漏?常见的内存泄漏情况2. 如何排查 Java 中的内存泄漏?2.1 使用 J

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Linux Mint Xia 22.1重磅发布: 重要更新一览

《LinuxMintXia22.1重磅发布:重要更新一览》Beta版LinuxMint“Xia”22.1发布,新版本基于Ubuntu24.04,内核版本为Linux6.8,这... linux Mint 22.1「Xia」正式发布啦!这次更新带来了诸多优化和改进,进一步巩固了 Mint 在 Linux 桌面

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

Linux中Curl参数详解实践应用

《Linux中Curl参数详解实践应用》在现代网络开发和运维工作中,curl命令是一个不可或缺的工具,它是一个利用URL语法在命令行下工作的文件传输工具,支持多种协议,如HTTP、HTTPS、FTP等... 目录引言一、基础请求参数1. -X 或 --request2. -d 或 --data3. -H 或