PolarDB-X 1.0-性能白皮书-PolarDB-X Sysbench测试说明

本文涉及的产品
云原生数据库 PolarDB 分布式版,标准版 2核8GB
简介: Sysbench 说明Sysbench是一款开源的、模块化的、跨平台的多线程性能测试工具,可以执行数据库、CPU、内存、线程、IO等方面的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下验证PolarDB-X在Sysbench OLTP和SELECT场景中的性能表现。

Sysbench 说明

Sysbench是一款开源的、模块化的、跨平台的多线程性能测试工具,可以执行数据库、CPU、内存、线程、IO等方面的性能测试。目前支持的数据库有MySQL、Oracle和PostgreSQL。以下验证PolarDB-X在Sysbench OLTP和SELECT场景中的性能表现。

测试设计

  • 购买PolarDB-X、ECS、RDS。
  • PolarDB-X(4种规格):入门版8C32G、标准版16C64G、企业版32C128G、企业版64C256G。
  • ECS压力机(1台):32C64G、操作系统 Aliyun Linux 2.1903 64位、计算网络增强型。
  • RDS(12台):16C64G、MySQL 5.7、独享型。
  • 备注:DRDS、ECS、RDS都处于同一可用区,同一VPC。
  • 在PolarDB-X控制台创建水平拆分库,选择已经购买的12台RDS。
  • 在ECS安装Sysbench,并准备1.6亿数据。关于如何使用Sysbench,请参见Sysbench使用指南

测试参数说明


  1. --test='/usr/local/share/sysbench/oltp_drds.lua'  OLTP场景使用oltp_drds.lua, SELECT场景使用select.lua
  2. --mysql_table_options='dbpartition by hash(`id`) tbpartition by hash(id) tbpartitions 2'PolarDB-X分库分表语法,表示每个分库2张分表。
  3. --oltp-table-size=160000000  准备1.6亿数据。
  4. --oltp_auto_inc=off 关闭自增主键。
  5. --oltp_skip_trx=on 跳过事务。
  6. --oltp_secondary ID设置为非主键防止主键冲突。
  7. --oltp_range_size=5连续取值5个,必定走到5个分片。
  8. --rand-init=on 每个测试表都是用随机数据来填充的sysbench
  9. --num-threads=200具体每个场景的并发数详情请参见结果表格。

测试语句范例:


  1. sysbench --test='/usr/local/share/sysbench/oltp_drds.lua'--oltp_tables_count=1--report-interval=5--oltp-table-size=160000000  --mysql-user=****--mysql-password=****--mysql-table-engine=innodb  --rand-init=on  --mysql-host=****--mysql-port=3306--mysql-db=****--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--max-time=300 run

OLTP 测试结果

drds-expansion1.png

规格 并发数 每秒 read/write 数量
入门版 8C32G 100 20807.12
标准版 16C64G 230 49667.48
企业版 32C128G 450 90693.70
企业版 64C256G 900 177506.48

SELECT 测试结果

2.png

规格 并发数 每秒 read/write 数量
入门版 8C32G 200 41401
标准版 16C64G 300 98182.26
企业版 32C128G 600 180500.00
企业版 64C256G 1200 366863.48

OLTP 场景测试脚本详情


  1. pathtest = string.match(test,"(.*/)")

  2. if pathtest then
  3.   dofile(pathtest .."common.lua")
  4. else
  5.   require("common")
  6. end

  7. function get_range_end(start)
  8.    return start + oltp_range_size -1
  9. end

  10. function thread_init(thread_id)
  11.   set_vars()

  12.   if(((db_driver =="mysql") or (db_driver =="attachsql")) and mysql_table_engine =="myisam")then
  13.      local i
  14.      local tables ={}
  15.      for i=1, oltp_tables_count do
  16.         tables[i]= string.format("sbtest%i WRITE", i)
  17.      end
  18.      begin_query ="LOCK TABLES ".. table.concat(tables," ,")
  19.      commit_query ="UNLOCK TABLES"
  20.   else
  21.      begin_query ="BEGIN"
  22.      commit_query ="COMMIT"
  23.   end

  24. end

  25. function event(thread_id)
  26.   local rs
  27.   local i
  28.   local table_name
  29.   local range_start
  30.   local c_val
  31.   local pad_val
  32.   local query

  33.   table_name ="sbtest".. sb_rand_uniform(1, oltp_tables_count)
  34.   if not oltp_skip_trx then
  35.      db_query(begin_query)
  36.   end

  37.   if not oltp_write_only then

  38.   for i=1, oltp_point_selects do
  39.      rs = db_query("SELECT c FROM ".. table_name .." WHERE id=".. sb_rand(1, oltp_table_size))
  40.   end

  41.   if oltp_range_selects then

  42.   for i=1, oltp_simple_ranges do
  43.      range_start = sb_rand(1, oltp_table_size)
  44.      rs = db_query("SELECT c FROM ".. table_name .." WHERE id BETWEEN ".. range_start .." AND ".. get_range_end(range_start))
  45.   end

  46.   for i=1, oltp_sum_ranges do
  47.      range_start = sb_rand(1, oltp_table_size)
  48.      rs = db_query("SELECT SUM(K) FROM ".. table_name .." WHERE id BETWEEN ".. range_start .." AND ".. get_range_end(range_start))
  49.   end

  50.   for i=1, oltp_order_ranges do
  51.      range_start = sb_rand(1, oltp_table_size)
  52.      rs = db_query("SELECT c FROM ".. table_name .." WHERE id BETWEEN ".. range_start .." AND ".. get_range_end(range_start).." ORDER BY c")
  53.   end

  54.   for i=1, oltp_distinct_ranges do
  55.      range_start = sb_rand(1, oltp_table_size)
  56.      rs = db_query("SELECT DISTINCT c FROM ".. table_name .." WHERE id BETWEEN ".. range_start .." AND ".. get_range_end(range_start).." ORDER BY c")
  57.   end

  58.   end

  59.   end

  60.   if not oltp_read_only then

  61.   for i=1, oltp_index_updates do
  62.      rs = db_query("UPDATE ".. table_name .." SET k=k+1 WHERE id=".. sb_rand(1, oltp_table_size))
  63.   end

  64.   for i=1, oltp_non_index_updates do
  65.      c_val = sb_rand_str("###########-###########-###########-###########-###########-###########-###########-###########-###########-###########")
  66.      query ="UPDATE ".. table_name .." SET c='".. c_val .."' WHERE id=".. sb_rand(1, oltp_table_size)
  67.      rs = db_query(query)
  68.      if rs then
  69.        print(query)
  70.      end
  71.   end

  72.   for i=1, oltp_delete_inserts do

  73.   i = sb_rand(1, oltp_table_size)

  74.   rs = db_query("DELETE FROM ".. table_name .." WHERE id=".. i)

  75.   c_val = sb_rand_str([[
  76. ###########-###########-###########-###########-###########-###########-###########-###########-###########-###########]])
  77.   pad_val = sb_rand_str([[
  78. ###########-###########-###########-###########-###########]])

  79.   rs = db_query("INSERT INTO ".. table_name ..  " (id, k, c, pad) VALUES ".. string.format("(%d, %d, '%s', '%s')",i, sb_rand(1, oltp_table_size), c_val, pad_val))

  80.   end

  81.   end -- oltp_read_only

  82.   if not oltp_skip_trx then
  83.      db_query(commit_query)
  84.   end

  85. end
相关实践学习
快速体验PolarDB开源数据库
本实验环境已内置PostgreSQL数据库以及PolarDB开源数据库:PolarDB PostgreSQL版和PolarDB分布式版,支持一键拉起使用,方便各位开发者学习使用。
相关文章
|
3月前
|
存储 算法 Cloud Native
【PolarDB-X列存魔法】揭秘TPC-H测试背后的性能优化秘籍!
【8月更文挑战第25天】阿里巴巴的云原生数据库PolarDB-X以其出色的性能、可靠性和扩展性闻名,在多种业务场景中广泛应用。尤其在列存储模式下,PolarDB-X针对分析型查询进行了优化,显著提升了数据读取效率。本文通过TPC-H基准测试探讨PolarDB-X列存执行计划的优化策略,包括高效数据扫描、专用查询算法以及动态调整执行计划等功能,以满足复杂查询的需求并提高数据分析性能。
84 1
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
PolarDB产品使用问题之如何基于Docker进行PolarDB-X单机模拟部署
|
3月前
|
C# Windows IDE
WPF入门实战:零基础快速搭建第一个应用程序,让你的开发之旅更上一层楼!
【8月更文挑战第31天】在软件开发领域,WPF(Windows Presentation Foundation)是一种流行的图形界面技术,用于创建桌面应用程序。本文详细介绍如何快速搭建首个WPF应用,包括安装.NET Framework和Visual Studio、理解基础概念、创建新项目、设计界面、添加逻辑及运行调试等关键步骤,帮助初学者顺利入门并完成简单应用的开发。
92 0
|
4月前
|
Oracle 关系型数据库 分布式数据库
PolarDB产品使用问题之使用pxd安装PolarDB-X出现报错,该怎么办
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
Kubernetes 关系型数据库 分布式数据库
PolarDB产品使用问题之PolarDB-X的架构形态有什么区别
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB产品使用问题之原PolarDB-X集群无法连接且Docker容器已经被删除,如何恢复数据
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
运维 关系型数据库 MySQL
PolarDB产品使用问题之PolarDB MySQL版和PolarDB-X的区别是什么
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
关系型数据库 分布式数据库 数据库
PolarDB产品使用问题之将RDS切换到PolarDB-X 2.0时,代码层的SQL该如何改动
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
4月前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之如何查看并进入您的PolarDB-X 2.0集群
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
6月前
|
关系型数据库 分布式数据库 数据库
【PolarDB开源】PolarDB-X源码解读:分布式事务处理机制揭秘
【5月更文挑战第20天】PolarDB-X,PolarDB家族的一员,专注于大规模分布式事务处理,采用2PC协议保证ACID特性。源码解析揭示其通过预提交、一致性快照隔离和乐观锁优化事务性能,以及利用事务日志进行故障恢复。深入理解其事务处理机制对开发者掌握分布式数据库核心技术至关重要。随着开源社区的发展,更多优化方案将涌现,助力构建更强大的分布式数据库系统。
219 6

相关产品

  • 云原生分布式数据库 PolarDB-X
  • 下一篇
    无影云桌面