【赵渝强老师】MySQL的基准测试与sysbench

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
简介: 本文介绍了MySQL数据库的基准测试及其重要性,并详细讲解了如何使用sysbench工具进行测试。内容涵盖sysbench的安装、基本使用方法,以及具体测试MySQL数据库的步骤,包括创建测试数据库、准备测试数据、执行测试和清理测试数据。通过这些步骤,可以帮助读者掌握如何有效地评估MySQL数据库的性能。

b153.png


对数据库进行基准测试,以掌握数据库的性能情况是非常必要的。因此对数据库的性能指标进行定量的、可复现的、可对比的测试就显得非常的重要。


一、MySQL的基准测试与sysbench


MySQL的基准测试可以理解为是对数据库运行时的一种压力测试。但这样的测试不关心业务逻辑,更加简单、直接、易于测试。测试时使用的数据可以由工具生成,不要求真实。MySQL数据库基准测试时的关键指标包括以下3个方面:


  • TPS/QPS:衡量吞吐量。
  • 响应时间:包括平均响应时间、最小响应时间、最大响应时间、时间百分比等,其中时间百分比参考意义较大,如前95%的请求的最大响应时间。。
  • 并发量:同时处理的查询请求的数量。


MySQL利用sysbench基准测试工具可以很好地完成数据库的基准测试工作。sysbench支持多线程的工作,并且能够实现跨平台的安装部署。


视频讲解如下:


二、【实战】安装和使用sysbench


下面通过具体的步骤来演示如何安装sysbench,以及它的基本使用方法。


(1)sysbench可以通过yum方式直接进行安装,执行下面的语句。

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | bash
yum -y install sysbench


(2)查看sysbench的版本信息。

sysbench --version
# 输出的信息如下:
sysbench 1.0.20


(3)查看sysbench的使用帮助。

sysbench --help
# 输出的信息如下:
Usage:
  sysbench [options]... [testname] [command]


其中:

  • options代表sysbench进行测试时所使用的参数,主要分为通用选项和MySQL专用选项。下表列举了具体的选项名称和它们的含义。


  • testname指定了要进行测试的名称。
  • command代表sysbench要执行的命令,包括prepare、run和cleanup三个命令:prepare是为测试提前准备数据;run是执行正式的测试;cleanup是在测试完成后对数据库进行清理。


(4)使用sysbench测试服务器的CPU性能 。

sysbench cpu --cpu-max-prime=20000 --threads=2 run

提示:sysbench对CPU的测试主要是进行素数的加法运算进行测试,其中:

--cpu-max-prime: 生成素数的数量上限。

--threads: 启动进行素数计算的线程数。


输出的信息如下:

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
#指定线程个数
Number of threads: 2
Initializing random number generator from current time
#每个线程产生的素数上限为2万个
Prime numbers limit: 20000
Initializing worker threads...
Threads started!
CPU speed:
    #所有线程每秒完成了342.47次event
    events per second:       342.47
General statistics:
    total time:              10.0052s #共耗时10.0052秒
    total number of events:  3427    #在10.0052秒内共完成了3427次event
Latency (ms):
   min:                    2.67 #完成1次event最少耗时2.67ms
   avg:                    5.83 #完成所有events平均耗时5.83ms
   max:                   26.00 #完成1次event最大耗时26毫秒
   95th percentile:       13.95 #95%的events完成都在13.95ms完成
   sum:                19979.50 
Threads fairness:
    #平均每完成1713.5000次event,标准差是3.50
    events (avg/stddev):         1713.5000/3.50 
  
    #每个线程平均耗时9.9897秒,标准差为0.01event
    execution time (avg/stddev): 9.9897/0.01


(5)使用sysbench测试磁盘的IOPS,执行下面的语句。 

# 准备测试数据
sysbench fileio --file-total-size=1G --file-test-mode=rndrw \
--time=30 --max-requests=0 prepare

# 开始测试
sysbench fileio --file-total-size=1G --file-test-mode=rndrw \
--time=30 --max-requests=0 run

# 清除测试数据
sysbench fileio --file-total-size=1G --file-test-mode=rndrw \
--time=30 --max-requests=0 cleanup

提示:IOPS是Input/Output Per Second的缩写,即每秒的输入输出量(或读写次数)。它是衡量磁盘性能的主要指标之一。IOPS的计算公式如下:

IOPS = (Throughput read + Throughput written) * 1024 / 16kb


输出的信息如下:

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Extra file open flags: (none)
128 files, 8MiB each
1GiB total file size
Block size 16KiB
Number of IO requests: 0
Read/Write ratio for combined random IO test: 1.50
Periodic FSYNC enabled, calling fsync() each 100 requests.
Calling fsync() at the end of test, Enabled.
Using synchronous I/O mode
Doing random r/w test
Initializing worker threads...
Threads started!
File operations:
    reads/s:                      3372.32
    writes/s:                     2248.21
    fsyncs/s:                     7195.38
Throughput:
    read, MiB/s:                  52.69
    written, MiB/s:               35.13
General statistics:
    total time:                   30.0309s
    total number of events:       384769
Latency (ms):
         min:                     0.00
         avg:                     0.08
         max:                    18.82
         95th percentile:         0.31
         sum:                 29737.74
Threads fairness:
    events (avg/stddev):           384769.0000/0.00
    execution time (avg/stddev):   29.7377/0.00
# 从上面的测试数据可以计算出当前磁盘的IOPS为:
IOPS=(52.69+35.13)*1024/16=5620.48



三、【实战】使用sysbench测试MySQL数据库


sysbench提供了相关的lua脚本对数据库的性能进行测试。这些脚本可以在目录“/usr/share/sysbench/”下找到。下面列出了这些lua的脚本。

tree /usr/share/sysbench/  -P *.lua 
/usr/share/sysbench/
 bulk_insert.lua
 oltp_common.lua
 oltp_delete.lua
 oltp_insert.lua
 oltp_point_select.lua
 oltp_read_only.lua
 oltp_read_write.lua
 oltp_update_index.lua
 oltp_update_non_index.lua
 oltp_write_only.lua
 select_random_points.lua
 select_random_ranges.lua
 tests
     include
        inspect.lua
        oltp_legacy
            bulk_insert.lua
            common.lua
            delete.lua
            insert.lua
            oltp.lua
            oltp_simple.lua
            parallel_prepare.lua
            select.lua
            select_random_points.lua
            select_random_ranges.lua
            update_index.lua
            update_non_index.lua
     t


下面通过具体的步骤来演示如何使用sysbench提供的lua脚本测试MySQL数据库。视频讲解如下:


(1)创建测试数据库sysbenchdemo。

mysql -hlocalhost -P3306 -uroot -pWelcome_1 \
-e 'create database sysbenchdemo'


(2)准备测试数据。

sysbench /usr/share/sysbench/oltp_insert.lua  \
         --mysql-host=localhost \
         --mysql-port=3306 \
         --mysql-socket=/tmp/mysql.sock \
         --mysql-user=root \
         --mysql-password=Welcome_1 \
         --mysql-db=sysbenchdemo \
         --db-driver=mysql \
         --tables=5 \
         --table-size=100000 \
         --time=180 prepare

提示:这调用了sysbench提供的脚本“/usr/share/sysbench/oltp_insert.lua”创建了5张表,并且往每张表中插入了100000条记录。


输出的信息如下:

sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Creating table 'sbtest1'...
Inserting 100000 records into 'sbtest1'
Creating a secondary index on 'sbtest1'...
Creating table 'sbtest2'...
Inserting 100000 records into 'sbtest2'
Creating a secondary index on 'sbtest2'...
Creating table 'sbtest3'...
Inserting 100000 records into 'sbtest3'
Creating a secondary index on 'sbtest3'...
Creating table 'sbtest4'...
Inserting 100000 records into 'sbtest4'
Creating a secondary index on 'sbtest4'...
Creating table 'sbtest5'...
Inserting 100000 records into 'sbtest5'
Creating a secondary index on 'sbtest5'...


(3)开始进行测试。

sysbench /usr/share/sysbench/oltp_insert.lua  \
         --mysql-host=localhost \
         --mysql-port=3306 \
         --mysql-socket=/tmp/mysql.sock \
         --mysql-user=root \
         --mysql-password=Welcome_1 \
         --mysql-db=sysbenchdemo \
         --db-driver=mysql \
         --tables=5 \
         --table-size=100000 \
         --time=180 run

# 输出的信息如下:
sysbench 1.0.20 (using bundled LuaJIT 2.1.0-beta2)
Running the test with following options:
Number of threads: 1
Initializing random number generator from current time
Initializing worker threads...
Threads started!
SQL statistics:
    queries performed:
        read:                 0
        # 总的写次数
        write:                175062
        other:                0
        total:                175062
    # 总的事务数和每秒事务数
    transactions:             175062 (972.55 per sec.)
    queries:                  175062 (972.55 per sec.)
    ignored errors:           0      (0.00 per sec.)
    reconnects:               0      (0.00 per sec.)
General statistics:
    # 总的执行时间和事件数
    total time:               180.0014s
    total number of events:   175062
# 延时的统计信息
Latency (ms):
         min:                      0.62
         avg:                      1.02
         max:                     94.24
         95th percentile:          1.58
         sum:                 179185.02
Threads fairness:
    events (avg/stddev):           175062.0000/0.00
    execution time (avg/stddev):   179.1850/0.00


(4)清理测试数据。

sysbench /usr/share/sysbench/oltp_insert.lua  \
         --mysql-host=localhost \
         --mysql-port=3306 \
         --mysql-socket=/tmp/mysql.sock \
         --mysql-user=root \
         --mysql-password=Welcome_1 \
         --mysql-db=sysbenchdemo \
         --db-driver=mysql \
         --tables=5 \
         --table-size=100000 \
         --time=180 cleanup



相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
7天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
4天前
|
人工智能 运维 双11
2024阿里云双十一云资源购买指南(纯客观,无广)
2024年双十一,阿里云推出多项重磅优惠,特别针对新迁入云的企业和初创公司提供丰厚补贴。其中,36元一年的轻量应用服务器、1.95元/小时的16核60GB A10卡以及1元购域名等产品尤为值得关注。这些产品不仅价格亲民,还提供了丰富的功能和服务,非常适合个人开发者、学生及中小企业快速上手和部署应用。
|
12天前
|
人工智能 弹性计算 文字识别
基于阿里云文档智能和RAG快速构建企业"第二大脑"
在数字化转型的背景下,企业面临海量文档管理的挑战。传统的文档管理方式效率低下,难以满足业务需求。阿里云推出的文档智能(Document Mind)与检索增强生成(RAG)技术,通过自动化解析和智能检索,极大地提升了文档管理的效率和信息利用的价值。本文介绍了如何利用阿里云的解决方案,快速构建企业专属的“第二大脑”,助力企业在竞争中占据优势。
|
14天前
|
自然语言处理 数据可视化 前端开发
从数据提取到管理:合合信息的智能文档处理全方位解析【合合信息智能文档处理百宝箱】
合合信息的智能文档处理“百宝箱”涵盖文档解析、向量化模型、测评工具等,解决了复杂文档解析、大模型问答幻觉、文档解析效果评估、知识库搭建、多语言文档翻译等问题。通过可视化解析工具 TextIn ParseX、向量化模型 acge-embedding 和文档解析测评工具 markdown_tester,百宝箱提升了文档处理的效率和精确度,适用于多种文档格式和语言环境,助力企业实现高效的信息管理和业务支持。
3935 2
从数据提取到管理:合合信息的智能文档处理全方位解析【合合信息智能文档处理百宝箱】
|
3天前
|
算法 安全 网络安全
阿里云SSL证书双11精选,WoSign SSL国产证书优惠
2024阿里云11.11金秋云创季活动火热进行中,活动月期间(2024年11月01日至11月30日)通过折扣、叠加优惠券等多种方式,阿里云WoSign SSL证书实现优惠价格新低,DV SSL证书220元/年起,助力中小企业轻松实现HTTPS加密,保障数据传输安全。
497 3
阿里云SSL证书双11精选,WoSign SSL国产证书优惠
|
10天前
|
安全 数据建模 网络安全
2024阿里云双11,WoSign SSL证书优惠券使用攻略
2024阿里云“11.11金秋云创季”活动主会场,阿里云用户通过完成个人或企业实名认证,可以领取不同额度的满减优惠券,叠加折扣优惠。用户购买WoSign SSL证书,如何叠加才能更加优惠呢?
985 3
|
7天前
|
机器学习/深度学习 存储 人工智能
白话文讲解大模型| Attention is all you need
本文档旨在详细阐述当前主流的大模型技术架构如Transformer架构。我们将从技术概述、架构介绍到具体模型实现等多个角度进行讲解。通过本文档,我们期望为读者提供一个全面的理解,帮助大家掌握大模型的工作原理,增强与客户沟通的技术基础。本文档适合对大模型感兴趣的人员阅读。
394 15
白话文讲解大模型| Attention is all you need
|
7天前
|
算法 数据建模 网络安全
阿里云SSL证书2024双11优惠,WoSign DV证书220元/年起
2024阿里云11.11金秋云创季火热进行中,活动月期间(2024年11月01日至11月30日),阿里云SSL证书限时优惠,部分证书产品新老同享75折起;通过优惠折扣、叠加满减优惠券等多种方式,阿里云WoSign SSL证书将实现优惠价格新低,DV SSL证书220元/年起。
559 5
|
3天前
|
安全 网络安全
您有一份网络安全攻略待领取!!!
深入了解如何保护自己的云上资产,领取超酷的安全海报和定制鼠标垫,随时随地提醒你保持警惕!
692 1
您有一份网络安全攻略待领取!!!