性能实测:分布式存储 ZBS 与集中式存储 HDS 在 Oracle 数据库场景表现如何

本文主要是介绍性能实测:分布式存储 ZBS 与集中式存储 HDS 在 Oracle 数据库场景表现如何,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

作者:深耕行业的 SmartX 金融团队 金鑫

在金融客户的基础架构环境中,HDS 是一种被广泛使用的存储解决方案。作为集中式存储的代表之一,HDS 拥有高性能、高可用性和可扩展性的企业级存储特点,适用于实时数据处理、虚拟化和灾难备份等场景。

在《分布式存储支持数据仓库业务系统性能验证》文章中,我们对比了 SmartX 分布式存储 ZBS 与全闪集中式存储(EMC PowerStore)执行数仓跑批任务的效率。为了帮助用户了解更多应用场景下 ZBS 与传统集中式存储的性能表现,我们对 ZBS 和 HDS(Hitachi Virtual Storage Platform E590)展开了性能评测,包括基准性能测试和支持 Oracle 数据库的性能测试。结果显示,ZBS(开启 RDMA)在大部分基准测试和 Oracle 场景中,性能和稳定性均优于 HDS 集中式存储。

测试环境

zbs-hds-performance-1.png

  • 准备三台计算节点,一台部署单机 Oracle,另外两台部署 Oracle RAC,采用 Oracle 19c 软件版本。
  • 集中存储测试对象 Hitachi Virtual Storage Platform E590
  • 利用三台 x86 服务器构建 ZBS 分布式存储

测试过程与结果

存储基准性能测试

基准性能测试利用 FIO 工具,分别测试两个环境在存储基准性能、读写延时控制 500us、长时间(12 小时)运行、快照等条件下的性能表现。其中,在存储基准性能测试用例中,分别测试单计算节点(1P1V 和 1P3V)和三计算节点(3P1V 和 3P3V)的性能表现,延时控制和长时间运行场景均基于 3P1V 进行测试,快照场景基于 1P1V 进行测试*。

* P 表示物理机,V 表示卷。1P1V 表示一个物理机挂载一个卷,1P3V 表示一个物理机挂载三个卷,3P1V 表示三个物理机各挂载一个卷,3P3V 表示三个物理机各挂载三个卷。

存储基准-单计算节点测试结果

zbs-hds-performance-2.png

zbs-hds-performance-3.png

zbs-hds-performance-4.png

由于 ZBS 在接入网络层面支持 iSCSI、NVMe over TCP 和 NVMe over RDMA(RoCE v2)三种协议,我们分别开启三种协议进行了测试。可以看到,除了 1P3V – 随机读场景下 HDS 的性能和延迟情况要优于 ZBS,其他场景下 ZBS 开启 RDMA 后的性能均优于 HDS,基于 TCP 和 iSCSI 协议的 ZBS 性能与 HDS 性能水平相当。

存储基准-三计算节点测试结果

zbs-hds-performance-5.png

zbs-hds-performance-6.png

zbs-hds-performance-7.png

在三计算节点配置下,ZBS 开启 RDMA 后性能均优于同一场景下的 HDS 存储。

读写延时控制 500us 测试结果

zbs-hds-performance-8.png

读写延时分别控制在 500us 时,ZBS 开启 RDMA 后性能远超 HDS (几乎翻倍)。

12 小时长时间测试结果

zbs-hds-performance-9.png

通过 12 小时长时间的性能压测(IODepth 2 *32),观察存储性能抖动,从测试结果中的性能曲线和抖动幅度,可以明显观察到,ZBS 性能表现均优于 HDS,表现出更好的性能稳定性。

卷快照后性能测试结果

zbs-hds-performance-10.png

在快照测试中,4k 小块随机写场景下 HDS 与 ZBS 都有一定幅度的性能下降,几分种后恢复到初始性能;256k 大块顺序写场景下,ZBS 性能稳定未受快照事件影响,而 HDS 性能波动较明显。

支持 Oracle 业务性能测试

除了基准性能测试,我们还针对两个环境下 Oracle 数据库性能展开了对比测试,包括单库读写测试、单库 TPCC 测试、RAC 读写测试和 RAC TPCC 测试。

写性能测试

测试场景:

  • 基于券商委托插入脚本模拟压力
  • 50 并发
  • 单并发 150w 数据写入
  • 每 1000 笔提交一次

测试结果:

单库:

zbs-hds-performance-11.png

度量单位:每秒插入数据行数

RAC:

zbs-hds-performance-12.png

度量单位:每秒插入数据行数

读性能测试

测试场景:

  • 使用 CALIBRATE_IO 测试存储过程
  • 1T Datafile
  • 100G Redofile

测试结果:

单库:

zbs-hds-performance-13.png

RAC:

zbs-hds-performance-14.png

TPCC 测试

测试场景:

  • 使用 Swingbench 进行测试
  • 200 并发

测试结果:

单库:

zbs-hds-performance-15.png

RAC:

zbs-hds-performance-16.png

RAC(存储混合负载):

zbs-hds-performance-17.png

总体而言,ZBS(开启 RDMA)环境下 Oracle 数据库性能表现均优于 HDS 集中式存储环境,尤其是在 TPCC 测试中,相比 HDS,ZBS 可提升数据库性能约 30%,充分满足业务性能需求。

总结

整体而言,在存储基准场景和 Oracle 数据库场景下,ZBS 开启 RDMA 的性能和稳定性表现要优于 HDS 集中式存储,ZBS 优化的快照机制也可降低快照创建对性能带来的影响。

欲深入了解 ZBS 架构设计与技术创新,请阅读电子书《分布式存储 ZBS 的自主研发之旅》。

阅读原文:分布式存储与集中式存储(HDS)的性能对比

这篇关于性能实测:分布式存储 ZBS 与集中式存储 HDS 在 Oracle 数据库场景表现如何的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

IDEA如何切换数据库版本mysql5或mysql8

《IDEA如何切换数据库版本mysql5或mysql8》本文介绍了如何将IntelliJIDEA从MySQL5切换到MySQL8的详细步骤,包括下载MySQL8、安装、配置、停止旧服务、启动新服务以及... 目录问题描述解决方案第一步第二步第三步第四步第五步总结问题描述最近想开发一个新应用,想使用mysq

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

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

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

Oracle数据库使用 listagg去重删除重复数据的方法汇总

《Oracle数据库使用listagg去重删除重复数据的方法汇总》文章介绍了在Oracle数据库中使用LISTAGG和XMLAGG函数进行字符串聚合并去重的方法,包括去重聚合、使用XML解析和CLO... 目录案例表第一种:使用wm_concat() + distinct去重聚合第二种:使用listagg,

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

oracle中exists和not exists用法举例详解

《oracle中exists和notexists用法举例详解》:本文主要介绍oracle中exists和notexists用法的相关资料,EXISTS用于检测子查询是否返回任何行,而NOTE... 目录基本概念:举例语法pub_name总结 exists (sql 返回结果集为真)not exists (s

Java读取InfluxDB数据库的方法详解

《Java读取InfluxDB数据库的方法详解》本文介绍基于Java语言,读取InfluxDB数据库的方法,包括读取InfluxDB的所有数据库,以及指定数据库中的measurement、field、... 首先,创建一个Java项目,用于撰写代码。接下来,配置所需要的依赖;这里我们就选择可用于与Infl

Oracle的to_date()函数详解

《Oracle的to_date()函数详解》Oracle的to_date()函数用于日期格式转换,需要注意Oracle中不区分大小写的MM和mm格式代码,应使用mi代替分钟,此外,Oracle还支持毫... 目录oracle的to_date()函数一.在使用Oracle的to_date函数来做日期转换二.日

Java实现任务管理器性能网络监控数据的方法详解

《Java实现任务管理器性能网络监控数据的方法详解》在现代操作系统中,任务管理器是一个非常重要的工具,用于监控和管理计算机的运行状态,包括CPU使用率、内存占用等,对于开发者和系统管理员来说,了解这些... 目录引言一、背景知识二、准备工作1. Maven依赖2. Gradle依赖三、代码实现四、代码详解五

java如何分布式锁实现和选型

《java如何分布式锁实现和选型》文章介绍了分布式锁的重要性以及在分布式系统中常见的问题和需求,它详细阐述了如何使用分布式锁来确保数据的一致性和系统的高可用性,文章还提供了基于数据库、Redis和Zo... 目录引言:分布式锁的重要性与分布式系统中的常见问题和需求分布式锁的重要性分布式系统中常见的问题和需求