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. 测试环境

*超融合测试场景中,需要留部分 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 如何通过技术创新提升基础架构性能与可靠性。

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

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

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



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

相关文章

Spring Boot集成/输出/日志级别控制/持久化开发实践

《SpringBoot集成/输出/日志级别控制/持久化开发实践》SpringBoot默认集成Logback,支持灵活日志级别配置(INFO/DEBUG等),输出包含时间戳、级别、类名等信息,并可通过... 目录一、日志概述1.1、Spring Boot日志简介1.2、日志框架与默认配置1.3、日志的核心作用

破茧 JDBC:MyBatis 在 Spring Boot 中的轻量实践指南

《破茧JDBC:MyBatis在SpringBoot中的轻量实践指南》MyBatis是持久层框架,简化JDBC开发,通过接口+XML/注解实现数据访问,动态代理生成实现类,支持增删改查及参数... 目录一、什么是 MyBATis二、 MyBatis 入门2.1、创建项目2.2、配置数据库连接字符串2.3、入

Python安装Pandas库的两种方法

《Python安装Pandas库的两种方法》本文介绍了三种安装PythonPandas库的方法,通过cmd命令行安装并解决版本冲突,手动下载whl文件安装,更换国内镜像源加速下载,最后建议用pipli... 目录方法一:cmd命令行执行pip install pandas方法二:找到pandas下载库,然后

Redis客户端连接机制的实现方案

《Redis客户端连接机制的实现方案》本文主要介绍了Redis客户端连接机制的实现方案,包括事件驱动模型、非阻塞I/O处理、连接池应用及配置优化,具有一定的参考价值,感兴趣的可以了解一下... 目录1. Redis连接模型概述2. 连接建立过程详解2.1 连php接初始化流程2.2 关键配置参数3. 最大连

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也

Java Thread中join方法使用举例详解

《JavaThread中join方法使用举例详解》JavaThread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍... 目录前言1.join()方法的定义和作用2.join()方法的三个重载版本3.join()方法的工作原

在Java中使用OpenCV实践

《在Java中使用OpenCV实践》用户分享了在Java项目中集成OpenCV4.10.0的实践经验,涵盖库简介、Windows安装、依赖配置及灰度图测试,强调其在图像处理领域的多功能性,并计划后续探... 目录前言一 、OpenCV1.简介2.下载与安装3.目录说明二、在Java项目中使用三 、测试1.测

MyBatis-Plus 自动赋值实体字段最佳实践指南

《MyBatis-Plus自动赋值实体字段最佳实践指南》MyBatis-Plus通过@TableField注解与填充策略,实现时间戳、用户信息、逻辑删除等字段的自动填充,减少手动赋值,提升开发效率与... 目录1. MyBATis-Plus 自动赋值概述1.1 适用场景1.2 自动填充的原理1.3 填充策略