跳至主要内容

使用sysbench对MySQL进行基准测试

Welcome file

简介

对当前硬件的MySQL进行基准测试,能够对MySQL在当前硬件下的表现有一定的了解。本文简单介绍一下如何使用sysbench对MySQL进行基准测试。

环境准备

MySQL 8.0.28

Debian 11

安装sysbench

Debian/Ubuntu

curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.deb.sh | sudo bash
sudo apt -y install sysbench

其他系统的安装方法可以在sysbench(https://github.com/akopytov/sysbench)的github项目主页中查看。

测试前准备

测试前,主要需要建立好对应的库和需要测试的数据

建立名为sysbench_test的库

create database sysbench_test

准备数据

sysbench oltp_read_write --table-size=10000000 --mysql-host=127.0.0.1 --db-driver=mysql --mysql-db=sysbench_test --mysql-user=root --mysql-password=root prepare
  • table-size 表示需要准备的表的大小
  • 后面的参数都是一些MySQL对应连接的参数
  • 最后的prepare命令表示准备数据

开始测试

准备好数据之后,就可以开始进行基准测试了。

sysbench oltp_read_write --mysql-host=127.0.0.1 --db-driver=mysql --mysql-db=sysbench_test --mysql-user=root --mysql-password=root --table-size=10000000 --time=300 --threads=3 run
  • time表示测试时间,单位是秒
  • threads表示测试的线程

测试完之后,会输出类似如下的结果(结果解释通过注释方式表示):

sysbench 1.0.20 (using system LuaJIT 2.1.0-beta3)

Running the test with following options:
Number of threads: 3 // 使用的线程数
Initializing random number generator from current time


Initializing worker threads...

Threads started!

SQL statistics:
    queries performed:
        read:                            849884  // 读总数
        write:                           242824  // 写总数
        other:                           121412  // 其他操作的总数
        total:                           1214120 // 总计
    transactions:                        60706  (202.34 per sec.)    // 总事务数(每秒事务数 TPS)
    queries:                             1214120 (4046.89 per sec.)  // 总数(每秒query数 QPS)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          300.0118s  // 总运行时间
    total number of events:              60706      // 运行的事务数

Latency (ms):
         min:                                    4.89  // 最短耗时
         avg:                                   14.82  // 平均耗时
         max:                                  111.66  // 最长耗时
         95th percentile:                       28.16  // 95%的操作耗时
         sum:                               899812.39

Threads fairness:
    events (avg/stddev):           20235.3333/26.95
    execution time (avg/stddev):   299.9375/0.00

参考资料

[1]sysbench项目主页

评论

此博客中的热门博文

国密SM2签名封装成PKCS7格式

在国内做金融行业,难免会有被强制使用国密算法的情况,而且一般还会指定必须使用硬件加密机之类的设备,所以我也稍微的研究了一下国密算法,使用软算法签名并封装 PKCS7 格式(文档中的一个交互)。 以下是基于 Bouncy Castle 的示例,密钥对的生成可以参考 Bouncy Castle 中 test 包下 SM2 相关代码 public static String sign ( ) throws Exception { //加载公钥 byte [ ] plainText = "hello, world" . getBytes ( ) ; FileInputStream input = new FileInputStream ( "F:\\certificate\\public.cer" ) ; CertificateFactory certificateFactory = new CertificateFactory ( ) ; X509Certificate certificate = ( X509Certificate ) certificateFactory . engineGenerateCertificate ( input ) ; input . close ( ) ; //加载私钥,private为换成实际的私钥 PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec ( "private" . getBytes ( ) ) ; //SM2算法实际上为ECC算法,并指定了一些参数值,所以这里的参数是EC KeyFactory factory = KeyFactory . getInstance ( "EC" , "BC" ) ; PrivateKey privateKey = factory . generatePrivate ( spec ) ; //以下为签名并封装成PKCS7格式 byte [ ] signedMessag

Spring Boot Actuator 2 示例

Welcome file 简介 Spring Boot Actuator为应用程序提供了各种开箱即用的运维特性,可以与应用方便的交互和监控。 使用环境:Java 11 和 Spring Boot 2.4.3.RELEASE 集成Spring Boot Actuator 在Spring Boot中集成Spring Boot Actuator与集成其他的框架类似,在 pom.xml 里引入相关的starter就可以: < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-actuator </ artifactId > </ dependency > < dependency > < groupId > org.springframework.boot </ groupId > < artifactId > spring-boot-starter-web </ artifactId > </ dependency > 由于大部分的使用场景还是web,所以这里也用Spring MVC做示例。 配置好 pom.xml 后,默认actuator仅暴露一些基本功能,实际使用中,根据需求暴露对应功能。为了简便测试,这里在 application.yml 中配置暴露全部功能: management : endpoints : web : exposure : include : "*" endpoint : health : enabled : true show-details : always probes : enabled : true shutdown : enabled : true metr

NextCloud数据目录迁移

最近服务器的环境坏了,所以迁移了NextCloud的数据目录。不过在迁移过程中有点小问题。 环境: Ubuntu 18.04 Docker 19.03.7 1.NextCloud页面不正常,Docker日志显示XX目录permission denied 参考了 这里 的做法,不过是把  /var/www/html/   整个目录的权限都修改为  chown -R www-data:www-data ,之后就不再报权限问题了。 2.数据库配置修改 因为NextCloud是在初始化时填的数据库连接信息,所以直接迁移数据目录的情况下,会导致应用连不到新的数据库环境。此时可以找到数据目录下的  config/config.php 文件,直接修改数据库连接配置。