PolarDB-X 1.0-性能白皮书-Sysbench 使用指南

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: PolarDB-X 性能测试使用 Sysbench 作为压测工具,本文介绍 Sysbench 的使用方法。

PolarDB-X 性能测试使用 Sysbench 作为压测工具,本文介绍 Sysbench 的使用方法。

安装

测试使用的是 Sysbench 0.5 版本,安装方法如下:


  1. git clone https://github.com/akopytov/sysbench.git
  2. git checkout 0.5

  3. yum -y install make automake libtool pkgconfig libaio-devel
  4. yum -y install mariadb-devel

  5. ./autogen.sh
  6. ./configure
  7. make -j
  8. make install

注意:以上是在压测 ECS 上的安装方法,如果需要安装到其他操作系统,请参见Sysbench官方文档

安装完毕后,所有自带压测脚本都在 /usr/local/share/sysbench 目录下,PolarDB-X 性能测试将使用该目录下的脚本。除此之外,也可以在源码目录 sysbench/sysbench/tests/db 下找到对应的压测脚本。

使用简介

常用测试模型

Sysbench 通过脚本定义了若干常用的压测模型,以下简单介绍几个常用模型:

压测模型 描述
bulk_inert.lua 批量插入数据
insert.lua 单值插入数据
delete.lua 删除数据
oltp.lua 混合读写测试,读写比例14:4
select.lua 简单的主键查询

表结构

对 PolarDB-X 进行测试时,对 Sysbench 的测试表稍作改造,将其修改为分库分表的形式,测试表的建表语句如下:


  1. CREATE TABLE `sbtest1`(
  2.  `id`int(10)unsigned NOT NULL,
  3.  `k`int(10)unsigned NOT NULL DEFAULT '0',
  4.  `c`char(120) NOT NULL DEFAULT '',
  5.  `pad`char(60) NOT NULL DEFAULT '',
  6.  KEY `xid`(`id`),
  7.  KEY `k_1`(`k`)
  8. ) dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 4

以上建表语句中,分库分表数可自行调整,该表会在准备数据阶段自动生成,无需手动创建。

测试命令及参数

使用 Sysbench 进行压测,通常分为三个步骤:

  • prepare,准备数据
  • run,运行测试模型
  • cleanup,清理测试数据

通常仅需准备一次数据,在此数据基础上测试各种模型即可。

常用参数

Sysbench 中常用的参数如下:

  • --oltp-tables-count=1:表数量
  • --oltp-table-size=10000000:每个表产生的记录行数
  • --oltp-read-only=off:是否生成只读SQL,默认 off,如果设置为 on,则 oltp 模型不会生成 update, delete, insert 的 SQL 语句
  • --oltp-skip-trx=[on|off]:省略 BEGIN / COMMIT 语句。默认是 off
  • --rand-init=on:是否随机初始化数据,如果不随机化那么初始好的数据每行内容除了主键不同外其他完全相同
  • --num-threads=12: 并发线程数,可以理解为模拟的客户端并发连接数
  • --report-interval=10:表示每 10s 输出一次性能数据
  • --max-requests=0:压力测试产生请求的总数,如果以下面的 max-time 来记,这个值设为 0 即可
  • --max-time=120:测试的持续时间
  • --oltp_auto_inc=off:ID是否为自增列
  • --oltp_secondary=on:将ID设置为非主键防止主键冲突
  • --oltp_range_size=5:连续取值 5 个,必定走到 5 个分片
  • --mysql_table_options='dbpartition by hash(id) tbpartition by hash(id) tbpartitions 2':PolarDB-X 支持拆分表,在建表的时候需要指定拆分方式

示例命令

您可以使用如下命令进行对应操作:

准备数据:


  1. sysbench --test='/usr/local/share/sysbench/oltp.lua'--oltp_tables_count=1--report-interval=10--oltp-table-size=10000000  --mysql-user=***--mysql-password=***--mysql-table-engine=innodb  --rand-init=on  --mysql-host=****--mysql-port=***--mysql-db=***--max-time=300--max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off  --oltp_secondary=on --oltp_range_size=5--mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2'--num-threads=200   prepare

执行测试


  1. sysbench --test='/usr/local/share/sysbench/oltp.lua'--oltp_tables_count=1--report-interval=10--oltp-table-size=10000000  --mysql-user=***--mysql-password=***--mysql-table-engine=innodb  --rand-init=on  --mysql-host=****--mysql-port=***--mysql-db=***--max-time=300--max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off --oltp_secondary --oltp_range_size=5--mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2'--num-threads=200 run

清理环境


  1. sysbench --test='/usr/local/share/sysbench/oltp.lua'--oltp_tables_count=1--report-interval=10--oltp-table-size=10000000  --mysql-user=***--mysql-password=***--mysql-table-engine=innodb  --rand-init=on  --mysql-host=****--mysql-port=***--mysql-db=***--max-time=300--max-requests=0   --oltp_skip_trx=on --oltp_auto_inc=off --oltp_secondary --oltp_range_size=5--mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(`id`) tbpartitions 2'--num-threads=200 cleanup


相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
23天前
|
存储 缓存 调度
性能提升利器|PolarDB- X 超详细列存查询技术解读
本文将深入探讨 PolarDB-X 列存查询引擎的分层缓存解决方案,以及其在优化 ORC 列存查询性能中的关键作用。
244 24
|
7月前
|
存储 SQL 关系型数据库
PolarDB-x 比mysql查询性能怎么样?速度快吗
PolarDB-x 比mysql查询性能怎么样?速度快吗
359 0
|
存储 SQL 缓存
PolarDB-X 全局Binlog解读之性能篇(下)
本篇为《PolarDB-X 全局Binlog解读之性能篇(上)》的姊妹篇,将从技术原理角度聊一聊PolarDB-X CDC的一些性能优化手段。
PolarDB-X 全局Binlog解读之性能篇(下)
|
SQL 弹性计算 Java
PolarDB-X 全局Binlog解读之性能篇(上)
本篇来介绍一下PolarDB-X全局binlog在性能方面的一些设计和思考,先通过几个实际的测试案例来展示全局binlog的性能情况,然后结合这些案例来深入讲解全局binlog关于优化的故事。
PolarDB-X 全局Binlog解读之性能篇(上)
|
NoSQL 固态存储 关系型数据库
TiDB、OceanBase、PolarDB-X、CockroachDB二级索引写入性能测评
二级索引是关系型数据库相较于NoSQL数据库的一个关键差异。二级索引必须是强一致的,因此索引的写入需要与主键的写入放在一个事务当中,事务的性能是二级索引性能的基础。本次测试将重点关注不同分布式数据库的索引性能,特别关注业内全局索引的性能与MySQL索引的性能差异。
TiDB、OceanBase、PolarDB-X、CockroachDB二级索引写入性能测评
|
存储 运维 Cloud Native
PolarDB-X 1.0-技术白皮书-技术架构
架构演进理念 当前,分布式领域有3大技术方向:Sharding技术,NewSQL原生分布式技术,云原生DB技术。每种分布式都有其独特的优势和特点。PolarDB-X的架构继承了DRDS和X-DB技术的稳定性,结合了PolarDB的云原生技术,融入了NewSQL对于分布式数据一致性的能力,为用户提供新的“云原生+分布式”的产品体验。
301 0
PolarDB-X 1.0-技术白皮书-技术架构
|
存储 SQL 分布式计算
PolarDB-X 1.0-技术白皮书-技术原理
扩展性原理 扩展性本质在于分而治之,PolarDB-X计算资源通过水平拆分(分库分表)和垂直拆分,将数据分散到多个存储资源MySQL以实现获取数据读写并发和存储容量分散的效果。 水平拆分(分库分表) PolarDB-X具备数据水平拆分的能力,将数据库数据按某种规则分散存储到多个稳定的MySQL数据库上。这些MySQL数据库可分布于多台机器乃至跨机房,对外服务(增删改查)尽可能保证如同单MySQL数据库体验。拆分后,在MySQL上物理存在的数据库称为分库,物理的表称为分表(每个分表数据是完整数据的一部分)。PolarDB-X通过在不同MySQL实例上挪动分库,实现数据库扩容,提升PolarDB
514 0
PolarDB-X 1.0-技术白皮书-技术原理
|
数据采集 容灾 网络协议
PolarDB-X 1.0-技术白皮书-解决方案与客户案例
异地多活场景下的数据库方案 方案背景 随着云计算的蓬勃发展,越来越多信息系统选择部署在云计算环境下,因此基于云产品为信息系统的服务能力和数据质量提供保障尤为重要。为了防止灾难性的故障如火灾、洪水、地震、区域电力中断或者人为破坏等对信息系统造成不可挽回的破坏,需要构建容灾系统来保障信息系统的可用性和安全性。 2007年,国务院信息化办公室联合银行、电力、民航、铁路、证券等八大重点行业,制定发布了国家标准GB/T20988-2007《信息系统灾难恢复规范》,明确规定了容灾能力的6个等级要求。企业在构建容灾系统时往往会参考国标等级,或者以此作为合规要求。然而,大部分传统容灾方案如同城容灾、同城双活
308 0
PolarDB-X 1.0-技术白皮书-解决方案与客户案例
|
弹性计算 关系型数据库 MySQL
PolarDB-X 1.0-性能白皮书-PolarDB-X TPC-C测试说明
本文介绍如何使用TPC-C工具测试PolarDB-X数据库的联机交易处理(偏向OLTP能力),您可以按照本文介绍自行测试对比,快速了解数据库系统的性能。
1661 0
PolarDB-X 1.0-性能白皮书-PolarDB-X TPC-C测试说明
|
SQL 弹性计算 关系型数据库
PolarDB-X 1.0-性能白皮书-TPC-H测试说明
本文详细介绍了PolarDB-X的TPC-H测试设计、测试过程和测试结果。
1239 0
PolarDB-X 1.0-性能白皮书-TPC-H测试说明

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 下一篇
    DataWorks