GaussDB关键技术原理:高弹性(六)

数据库性能压测之TPC-C基准测试 TPC-C是用商品批发业务混合了只读和读写等复杂事务来模拟OLTP场景。本文的目的是梳理TPC-C的特点以及工具使用,希望对同学们做TPC-C基准压测有所帮助。 阅读详情

GaussDB关键技术原理:高弹性(六)

    </div>

</div>

    
<article class="baidu_pl">
    <div id="article_content" class="article_content clearfix">
    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/kdoc_html_views-1a98987dfd.css">
    <link rel="stylesheet" href="https://csdnimg.cn/release/blogv2/dist/mdeditor/css/editerView/ck_htmledit_views-704d5b9767.css">
         
            <div id="content_views" class="htmledit_views">
                <p>书接上文<a href="https://blog.youkuaiyun.com/GaussDB/article/details/141962136?spm=1001.2014.3001.5501" title="GaussDB关键技术原理:高弹性(五)">GaussDB关键技术原理:高弹性(五)</a>从日志多流和事务相关方面对hashbucket扩容技术进行了解读,本篇将从<strong>扩容实践</strong>方面继续介绍<a href="https://so.youkuaiyun.com/so/search?q=GaussDB&amp;spm=1001.2101.3001.7020" target="_blank" class="hl hl-1" data-report-click="{&quot;spm&quot;:&quot;1001.2101.3001.7020&quot;,&quot;dest&quot;:&quot;https://so.youkuaiyun.com/so/search?q=GaussDB&amp;spm=1001.2101.3001.7020&quot;,&quot;extra&quot;:&quot;{\&quot;searchword\&quot;:\&quot;GaussDB\&quot;}&quot;}" data-tit="GaussDB" data-pretit="gaussdb">GaussDB</a>高弹性技术。</p> 

5 扩容实践  

5.1.1 TPC-C

TPC-C(全称Transaction Processing Performance Council Benchmark C),是一套衡量联机交易处理系统(OLTP系统)的基准测试集。它于1992年8月首次发布,最终取代了早先的TPC-A成为事实上的行业标准。当前的最新版本是5.11, 发布于2010年2月。

TPC-C是以在线零售业公司为例设计的一种数据模型。每个仓库的数据量约为 76.823 MB。TPC-C涉及9张表,包含了新订单的生成(NewOrder)、支付操作(Payment)、订单状态查询(OrderStatus)、配送发货(Delivery)和库存状态查询(StockLevel)5类业务事务模型。5类业务的占比是可以由用户通过配置文件自定义的。

TPC-C的评测指标是每分钟处理的业务量(transactions per minute, tpmC),又称作流量指标(throughput)。本指标越大表示系统性能越高。首次发布的评测记录是1992年11月由IBM AS/400系统创造的,当时的结果是54 tpmC。到2000年左右,高端机器的平均记录是240万tpmC。许多公司为了获得这样的记录而构建了大量机器组合而成的系统。当前的最新记录是在2020年由云计算创造的7.073亿tpmC。

另外,TPC-C还可以通过系统性能价格比(cost-per-tpmC)的方式来体现,即测试系统报价(美元)与流量指标的比值。在获得相同的tpmC值的情况下,系统报价越低越好。当前许多小型本地系统旨在降低系统性能价格比而不懈努力。

BenchmarkSQL是一款基于JDBC实现的类似于OLTP的TPC-C标准测试工具,目前支持的数据库有:PostgreSQL、Oracle、Firebird。由于openGauss的接口与PostgreSQL兼容性较好,所以也可以使用该工具对openGauss数据库进行TPC-C测试。   

5.1.2 Sysbench

Sysbench是一款开源的多线程脚本工具,适用于Linux系统。Sysbench是C语言的二进制文件,使用Lua脚本执行基线测试,主要用于测试数据库系统。

Sysbench允许在命令行中指定测试类型,包括:

  • oltp_*.lua: 测试OLTP型数据库性能(使用自定义Lua脚本)

  • cpu: 测试CPU性能

  • fileio: 测试文件输入/输出性能

  • memory: 测试内存函数运行速度

  • threads: 测试多线程子系统性能

  • mutex: 测试互斥锁性能

下面我们主要关注第1种测试类型,即使用用户自定义Lua脚本。

在sysbench执行过程中和结束时,可以查看统计数据。其中,主要关注的是每秒事务执行数量(transactions per second,tps),每秒查询执行数量(queries per second, qps), 时延毫秒数(latency)。其中,每秒查询执行数量又可以细分为读查询(read),写查询(write),其他查询(other)。每秒事务/查询执行数量越高,时延毫秒数越低,说明数据库性能越好。

Sysbench目前已经内置了MySQL和PostgreSQL的驱动,由于GaussDB和PostgreSQL兼容性较好,所以可以通过指定pgsql的变量(包括host, port, user, password, db)来进行测试。

5.2 扩容步骤  

5.2.1 安装GaussDB集群

安装GaussDB集群需要使用运维工具集(Operation Manager,OM)和配置集群XML文件。其中,XML文件负责声明GaussDB集群的具体配置情况。本文以3CN3DN集群配置为例,展示安装GaussDB的命令如下:   


 
  1. # root身份执行
  2. sudo [your-location]/script/gs_preinstall -U [username] -G [usergroup] -X [xml-location] -- alarm-type= 1
  3. # 切换到普通用户
  4. su – [username]
  5. gs_install -X [xml-location]
  6. # 卸载cluster
  7. gs_uninstall -- delete-data
AI助手

图1为分布式3CN3DN集群的架构。

图1 分布式3CN3DN集群架构图

5.2.2 启动GaussDB集群

通过cm_ctl命令,可以有效对GaussDB集群进行管控,命令如下:


 
  1. # 集群启动
  2. cm_ctl start
  3. # 集群停止
  4. cm_ctl stop
  5. # 查看集群信息
  6. cm_ctl query -Cvdpi
  7. # 查询集群信息
  8. cm_ctl query -Cv
AI助手

5.2.3 扩容GaussDB集群

以3CN6DN集群配置为例,展示扩容GaussDB的命令如下:   


 
  1. # 以root身份运行
  2. sudo [your-location] /script /gs_preinstall -U [username] -G [usergroup] -X [new-xml-location] --alarm-type = 1
  3. # 切换到普通用户
  4. su – [username]
  5. # 扩容阶段 1,添加新节点
  6. gs_expand -t dilatation -X [new-xml-location] --parallel-jobs = 1
  7. # 扩容阶段 2,数据重分布
  8. gs_expand -t redistribute --redis-mode =insert --parallel-jobs = 1
AI助手

图2为分布式3CN6DN集群的GaussDB架构。

图2 分布式3CN6DN集群架构图

5.3 扩容期间的TPC-C测试  

在数据库扩容期间对GaussDB集群使用TPC-C工具同步监控,可以获得hashbucket表在扩容期间对TPCC模型性能的影响。

导入10000 warehorse的数据,3C3D,单DN 800GB数据,运行600并发TPCC,叠加hashbucket扩容(3DN扩6DN),业务运行情况如下图3所示, 可以看出整个扩容过程中,TPCC业务没有出现性能大幅度下降的情况,整体运行平稳。   

图3 扩容期间TPCC性能测试结果图

5.4 扩容期间的sysbench测试  

在数据库扩容期间对GaussDB集群使用sysbench工具同步监控,可以获得普通表和hashbucket表在扩容期间的JOIN操作性能影响,图x为JOIN操作示意图。我们设定Lua脚本的测试场景为等值JOIN。JOIN操作的两张表分别具有Column A, Column B两个int类型。两张表的数据量为1千万条,其中,Column A为随机值,范围[1, 100,000];Column B为唯一递增值,范围[1, 10,000,000],两者的范围差距为100倍。完整的SQL语句为:

 select * from h1 left JOIN h2 on h1.b = h2.b and h1.a = h2.a where h2.a = $1 order by h2.b limit 1;
 
AI助手

图4 两张表JOIN操作示意图

实验中每个物理节点的配置参数如表1所示:

表1  物理节点的配置参数

软硬件指标

型号数值

处理器

64 核Intel(R) Xeon(R) CPU E5-2690 v3 @ 2.60GHz

内存

256 GB

磁盘

ssd磁盘

网卡

万兆网

操作系统

EulerOS 2.0 (SP5) x86_64

普通表执行的是逻辑扩容,遍历所有库依次搬迁每个表。对于同一个库,同一个模式下的两张表:当表1完成扩容而表2未开始扩容时,两个表的位于在不同的组节点(NodeGroup)上,此时对表1,表2执行JOIN操作会造成CN无法利用分布式架构下推JOIN操作到各个DN上执行,而是会生成跨DN的stream计划进行数据重分布后在进行JOIN,大量的跨节点通信导致性能劣化严重,如图5所示。   

图5 普通表扩容期间的tps

hashbucket表执行的是物理扩容,以库(database)为单位进行库内所有表的bucket搬迁。对于同一个库内的两张表:除了JOIN期间同步上线的bucket之外,其他的绝大多数bucket位于同一个组节点(NodeGroup)上,此时CN可以利用分布式架构分发JOIN操作到各个DN上执行,性能不受影响,如图6所示。

图6 hashbucket表扩容期间的tps

欢迎小伙伴们交流~

</article>

更多详情请参考GaussDB 文档中心:https://doc.hcs.huawei.com/db/zh-cn/gaussdbqlh/24.1.30/productdesc/qlh_03_0001.html

TPC-C业务模型分析 这些权重值的设定反映了在TPC-C基准测试中不同业务对性能的重要程度,有助于对数据库系统在处理不同类型事务时的性能表现进行评估。这些表共同组成了一个完整的模拟贸易公司的数据库,用于评估数据库系统在处理类似业务场景的复杂事务负载时的性能表现。表示“新订单处理业务”的权重,权重值为45,表明在整个测试中,新建订单的业务将占据较大比重。表示“订单状态查询业务”的权重,权重值为4,表明订单状态查询在整个测试中的比重较小。表示“库存查询业务”的权重,权重值为4,表明库存查询在整个测试中的比重较小。 阅读详情

相关推荐

Tpcc测试工具详解

TPCC-MYSQL 专门针对 MySQL 数据库进行性能测试,它使用标准的 TPCC 基准测试规范,并提供一系列工具和脚本来准备测试数据、运行测试和分析测试结果。: 指定生成测试报告的时间间隔。如果需要更详细的测试结果,建议查阅生成的日志文件和报告文件,它们通常包含更全面的测试结果和详细的性能指标分析。在进行 TPCC 基准测试之前,需要加载适当的测试数据,以模拟真实的数据库工作负载。部分列出了使用的测试参数,包括服务器地址、端口、数据库名称、用户名、密码、仓库数量、并发连接数、热身时间和测试时间。

qq_51010919的博客 7231

sysbench压力测试工具简介和使用(一)

http://blog.chinaunix.net/uid-7589639-id-4123266.html  一、sysbench压力测试工具简介:   sysbench是一个开源的、模块化的、跨平台的多线程性能测试工具,可以用来进行CPU、内存、磁盘I/O、线程、数据库的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下操作都将

lnmp交流 893

MDM主数据清洗和编码集成说明

绝大多数的企业业务系统是伴随业务发展而建设的,但随着业务发展单一系统难以支撑企业业务闭环。MDM主数据管理平台可以满足企业数据治理的需求,本文针对主数据清洗和编码集成进行梳理。...

数通畅联 3321

GaussDB关键技术原理:高弹性(四)

从hashbucket扩容技术方面对GaussDB高弹性能力进行解读

Gauss松鼠会 1959

超越界面设计:GUI Guider与LVGL在STM32F103上的系统集成与架构思考

本文探讨了GUI Guider与LVGL在STM32F103微控制器上的系统集成与架构设计,重点分析了工程模块化组织、内存管理优化、硬件驱动接口设计以及FreeRTOS多任务集成。针对STM32F103ZET6的资源限制,提供了实用的移植策略和性能优化方案,帮助开发者构建高效、可维护的嵌入式GUI系统。

j2k3l4的博客 922

别再只跑memtester了!嵌入式Linux内存压力测试,这5个参数和场景你试过吗?

本文深入探讨了嵌入式Linux内存压力测试的高级技巧,重点解析了memtester工具的5个关键参数和实战场景。通过物理地址测试、迭代控制、内存分配策略等调优方法,帮助开发者有效检测内存稳定性问题,适用于长期运行设备、特定故障重现等复杂场景,提升嵌入式系统可靠性。

weixin_30838873的博客 425

GaussDB关键技术原理:高弹性(五)

本节介绍日志多流技术,hashbucket扩容的思路仍然是基线数据加增量数据,其中基线数据为bucket物理文件和bucket级CLOG文件,增量数据采用搬迁增量XLOG并回放日志的方式进行追增。日志多流只在hashbucket扩容期间动态的产生和使用,扩容框架会根据当前正在搬迁的bucket列表,解析并生成对应的日志流用来进行后续的数据追增。

Gauss松鼠会 1925

零基础入门simulink建模仿真--基于Simulink的QPSK调制与解调仿真建模示例

QPSK是一种相位调制技术,将两个比特映射到一个符号上,每个符号对应四个可能的相位之一(0°、90°、180°、270°)。通过Simulink,我们可以通过模块化的建模方式实现QPSK的调制和解调过程,并观察信号在信道中的传输效果。通过本指南,我们介绍了如何基于Simulink搭建一个完整的QPSK调制与解调仿真模型,并进行仿真和性能评估。背景介绍:理解QPSK调制与解调的基本原理及其应用。所需工具和环境:列出进行QPSK仿真所需的工具和环境。步骤详解。

amy_mhd的博客 1309

GaussDB关键技术原理:高弹性(一)

本篇将分享GaussDB高弹性方面的相关知识,从CBI索引方面对hashbucket展开介绍。

Gauss松鼠会 1561

基于STM32设计的遥控灭火消防小车_296

随着城市化进程的加速和火灾发生频率的增加,传统的消防方式在应对初期火灾时存在反应慢、效率低等问题。为了提高火灾响应速度和灭火效率,本设计开发了一款基于STM32单片机的遥控灭火消防小车。该小车配备了烟雾检测、温湿度监测、火源定位、灭火操作等功能,能够通过蓝牙和WIFI实现远程控制与实时视频传输。设计采用了MQ2烟雾传感器、SHT30温湿度传感器、火光传感器和ESP32摄像头模块等硬件设备。系统不仅能够自动检测和定位火源,还可以手动调整灭火器对准位置,进行干粉灭火。此外,蜂鸣器用于火源报警,确保操作人员及时得

724

【1】Java 部分笔试题解析

解析A.abstract关键字应该放在class关键字之前。C.抽象方法不能有方法体。D缺少了class关键字。

博客 3943

GaussDB关键技术原理:高弹性(三)

从段页式技术方面对GaussDB高弹性能力进行了解读。hashbucket需要对文件进行分片,如果直接对单文件管理的数据文件进行切片,将会产生表数量*1024个文件,在表数量较多的场景下,产生的小文件数量多,导致文件管理系统的压力较大,因此,引入段页式管理,属于一个库表空间下的所有表共同使用一组段页式文件,防止bucket化拆分后小文件多的问题。

Gauss松鼠会 1847

【AI大模型应用开发】【LangChain系列】实战案例6:利用大模型进行文本总结的方法探索,文本Token超限怎么办?

假设有一组文档(PDF、Notion页面、客户问题等),你想要总结内容。可以利用大模型来帮你。今天来系统看下利用大模型来对文本进行总结的方法,以LangChain的使用为例。

同学小张的博客 3749

GaussDB关键技术原理:高弹性(二)

本篇将从优化器剪枝、执行器两方面继续介绍hashbucket。

Gauss松鼠会 1763

Cost-effective Attention Reuse across Multi-turn Conversations in Large Language Model Serving

通过多回合对话与人类互动是大型语言模型(LLM)的一个基本特征。然而,由于需要重复计算历史token的密钥值(KV)缓存,用于执行多回合会话的现有LLM服务引擎效率低下,从而导致高服务成本。为了解决这个问题,本文提出了AttentionStore,这是一种新的注意力机制,可以在多回合对话中重用KV缓存(即注意力重用),显著降低重复计算开销。AttentionStore维护一个分层的KV缓存系统,该系统利用经济高效的内存/存储介质为所有请求保存KV缓存。

c_cpp_csharp的专栏 394

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

GaussDB关键技术原理|高弹性:hashbucket介绍

1 前言GaussDB支持hash分布表,hash分布表的数据行根据hash分布列进行hash计算,计算出的hash值被打散到各个DN。随着业务增长数据规模变大,DN的承载能力会逐渐不够,这样就需要对DN节点数量进行扩充。节点数量扩充后,存储于原DN节点的数据就需要进行数据重新分布。目前GaussDB采用的是share-nothing的本地盘架构,各个DN节点独立维护各自的数据,这种架构下数据重分布的难度很大。如下图x所示,在线扩容从时间轴上看主要由两部分组成:图x 在线扩容示意图。

Gauss松鼠会 1250

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

GaussDB关键技术原理_高弹性:hashbucket介绍

GaussDB数据库通过hashbucket技术实现高弹性扩展,解决了业务增长带来的数据分布和节点扩容问题。hashbucket表将数据按hash值聚簇存储,每个DN节点管理多个分片,确保数据均匀分布。在线扩容时,GaussDB采用逻辑和物理两种数据重分布方式,逻辑方式通过SQL接口实现,物理方式则通过文件拷贝和日志追增提升性能。hashbucket表采用段页式存储,减少小文件对文件系统的压力,并在元数据管理中增加分片标识,优化数据管理效率。该技术不仅提升了在线扩容的性能,还解决了复杂查询场景下的性能劣化问

jerrywangcsdn的博客 1210

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

GaussDB关键技术原理:高弹性之段页式存储

段页式存储 根据前文的介绍,hashbucket需要对文件进行分片,如果直接对单文件管理的数据文件进行切片,将会产生表数量*1024个文件,在表数量较多的场景下,产生的小文件数量多,导致文件管理系统的压力较大,因此,引入段页式管理,属于一个库表空间下的所有表共同使用一组段页式文件,防止bucket化拆分后小文件多的问题。具体参数如下表1所示。具体来说,一个database在其所存在的每个表空间中,都拥有一组独立的段页式文件,如下图2所示:某个库下的一个表空间的段页式文件由1-5号文件组成。

m0_58021272的博客 1207

GaussDB关键技术原理:高弹性之hashbucket段页式

hashbucket的元数据管理采用上述方式主要为了后续扩容考虑,为了实现物理文件搬迁,我们需要直接把某个DN分片的bucket文件搬迁到新节点,为了保证文件搬迁后仍然可以寻址成功,需要在新DN build完元数据之后进行BktMainHead的更新,将即将搬迁至新节点的所有bucket 1号文件中的SegmentHeader所在的页面号更新到段页式1号文件的BktMainHead中。hashbucket位于段页式的下层,将段页式的文件组bucket化分片,如下图6所示。

m0_58021272的博客 414

GaussDB关键技术原理:高弹性之日志多流

日志传输完成后,新DN和备DN拉起startup线程,进入日志回放逻辑,通过回放增量xlog日志的方式,追加增量数据。receiver与备DN建立连接,备DN启动standby线程。MOVE BUCKETS语句中包含如下信息:正在进行扩容重分布的库database_name,本批搬迁bucket列表的bucketlist,老节点为sender_dn,新节点receiver_dn。主要涉及三个角色:老节点主DN(下简称老DN),新节点主DN(简称新DN),新节点备DN(简称备DN)。日志多流总体流程日志。

m0_58021272的博客 489
上一篇: GaussDB高智能--自治运维技术(中)
下一篇: GaussDB关键技术原理:高弹性(四)
jerrywangcsdn
博客等级 码龄8年 1363粉丝 224原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值