精华内容
下载资源
问答
  • 压力测试——测试MySQL

    千次阅读 2016-10-24 17:30:24
    除了对Web服务器进行测试外,数据库服务器也是系统的瓶颈之一,因此,我们还可以对数据库进行压力测试。关于MySQL的慢查询、explain分析等,这些主要是针对单...1. 利用mysqlslap工具测试MySQL mysqlslap是一个MySQL官
    除了对Web服务器进行测试外,数据库服务器也是系统的瓶颈之一,因此,我们还可以对数据库进行压力测试。关于MySQL的慢查询、explain分析等,这些主要是针对单条SQL语句的,其结果反映了SQL语句的优劣;而对MySQL进行的压力测试,则可以反映SQL语句的优劣和MySQL服务器的性能。
    1. 利用mysqlslap工具测试MySQL
    mysqlslap是一个MySQL官方提供的压力测试工具,通过模拟多个并发客户端访问MySQL来执行测试,使用起来非常简单。通过 mysqlslap --help 命令,可以查看可用的参数。
    打开命令行,切换至mysql的bin目录,执行命令如下:
    cd E:\xampp\mysql\bin
    mysqlslap --help
    下面列出一些比较重要的参数:
    defaults file:配置文件存放位置。
    create schema:所要测试的数据库。
    concurrency:并发数。
    engines:测试引擎,可以有多个,用分隔符隔开。
    iterations:迭代(重复)的实验次数。
    socket:用来连接数据库的socket文件的文件。
    debug info:打印内存和CPU的信息。
    only print:只打印测试语句而不实际执行。
    auto generate sql:自动产生测试的sql语句。
    auto generate sql load type:测试sql的类型,类型有mixed、update、write、key、read。
    numbers of queries:执行的sql语句的总数。
    number int cols:表内int列的数量。
    number char cols:表内char列的数量。
    query=name:使用自定义的脚本进行测试,例如可以调用自定义的一个存储过程或sql语句来执行测试。
    下面是一个示例:
    mysqlslap -a -concurrency=50 --number-of-queries 300 -T -hlocalhost -uroot -p
    这是一个自动测试,MySQL将自动创建数据库,自动插入以及读取,给出最终的执行结果,其执行结果可能如下:
    E:\xampp\mysql\bin>mysqlslap -a -concurrency=50 --number-of-queries 300 -T -hlocalhost -uroot -p
    Enter password:
    Benchmark
    Average number of seconds to run all queries: 8.024 seconds
    Minimum number of seconds to run all queries: 8.024 seconds
    Maximum number of seconds to run all queries: 8.024 seconds
    Number of clients running queries: 1
    Average number of queries per client: 300

    Benchmark
    Average number of seconds to run all queries: 8.493 seconds
    Minimum number of seconds to run all queries: 8.493 seconds
    Maximum number of seconds to run all queries: 8.493 seconds
    Number of clients running queries: 2
    Average number of queries per client: 150
    ......
    也可以指定执行自定义的sql语句,使用很简单,这里不作详细介绍。
    2. 使用JMeter工具测试MySQL
    由于mysqlslap工具测试数据库性能的方式,采用的是命令行方式,故不太友好。这里介绍用JMeter工具测试MySQL。
    关于JMeter工具的安装与基本用法,可参考:http://blog.csdn.net/lamp_yang_3533/article/details/52782732
    JMeter使用JDBC技术,可以测试任何支持JDBC技术的数据库,包括MySQL、Oracle、PqSQL、MSSQL等。这里,我们来演示如何使用JMeter测试MySQL数据库。
    (1)新建测试计划
    双击 jmeter.bat 文件打开JMeter工具,会自动创建一个测试计划。
    然后在该测试计划中,新建一个线程组,线程数为50,Ramp-Up Period为1,循环次数为1。

    (2)配置JDBC
    右击线程组,在弹出的快捷菜单中选择 添加 -> 配置元件 -> JDBC Connection Configuration。配置各项参数,其中Variable Name 可以随便填写,这里我们填写MySQL。最主要的配置是 Database Connection Configuration 区域,它有以下几个配置参数:
    Database URL:JDBC格式的数据库连接,每种数据库的URL都有所区别。MySQL数据库的写法为 jdbc:mysql://127.0.0.1:3306/test,test为数据库的名称。
    JDBC Driver class:JDBC驱动的名称,如com.mysql.jdbc.Driver。
    Username:数据库的用户名。
    Password:数据库的密码。
    其他的配置项保持默认值即可。

    (3)添加MySQL的JDBC的驱动
    因为JMeter没有自带JAR包,故需要到MySQL官方网站下载MySQL的JDBC驱动。
    网盘下载地址:http://pan.baidu.com/s/1miIvNBE
    下载后,解压,然后将里面的 mysql-connector-java-5.1.39-bin.jar 文件拷贝至JMeter的bin目录,以便快速找到该驱动文件。
    单击测试计划,在Add directory or jar to classpath处,点击浏览,选择mysql-connector-java-5.1.39-bin.jar文件,确定即可。

    (4)添加JDBC请求
    右击线程组,添加 -> Sampler -> JDBC Request,需要修改的参数包括以下几个:
    Variable Name:和刚刚填写的名称一致即可,如MySQL。表示建立一个名称MySQL的连接池,之后其他的JDBC Request都共用这个连接池。
    Query Type:这里我们选择Update Statement,表示SQL语句的类型为写操作。
    Query:所要测试的SQL语句。如 INSERT user(username,password,age) VALUES('jack','123456',17);

    (5)添加监听器
    右击线程组,添加 -> 监听器,凭个人的喜好和需求任意添加几个监听器(如:图形结果、Summary Report和察看结果树)。

    最后,选中线程组后,点击主菜单栏里面的启动按钮执行测试计划中的线程组。

    点击察看结果树,可看到线程组的执行结果。

    此外,我们也可以到MySQL中查看一下数据变化,可发现数据确实添加成功。到此为止,JMeter测试MySQL的步骤全部完成。
    展开全文
  • 测试 MySQL 性能的几款工具

    千次阅读 2019-06-05 16:08:59
    有一些有用的工具可以测试MySQL 和基于MySQL 的系统的性能。这里将演示如何利用这些工具进行测试。 mysqlslap  mysqlslap可以模拟服务器的负载,并输出计时信息。它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1...

    有一些有用的工具可以测试MySQL 和基于MySQL 的系统的性能。这里将演示如何利用这些工具进行测试。

    mysqlslap

      mysqlslap可以模拟服务器的负载,并输出计时信息。它包含在MySQL 5.1 的发行包中,应该在MySQL 4.1或者更新的版本中都可以使用。测试时可以执行并发连接数,并指定SQL 语句(可以在命令行上执行,也可以把SQL 语句写入到参数文件中)。如果没有指定SQL 语句,mysqlslap 会自动生成查询schema 的SELECT 语句。

    MySQL Benchmark Suite (sql-bench)

      在MySQL 的发行包中也提供了一款自己的基准测试套件,可以用于在不同数据库服务器上进行比较测试。它是单线程的,主要用于测试服务器执行查询的速度。结果会显示哪种类型的操作在服务器上执行得更快。

      这个测试套件的主要好处是包含了大量预定义的测试,容易使用,所以可以很轻松地用于比较不同存储引擎或者不同配置的性能测试。其也可以用于高层次测试,比较两个服务器的总体性能。当然也可以只执行预定义测试的子集(例如只测试UPDATE 的性能)。这些测试大部分是CPU 密集型的,但也有些短时间的测试需要大量的磁盘I/O 操作。

      这个套件的最大缺点主要有:它是单用户模式的,测试的数据集很小且用户无法使用指定的数据,并且同一个测试多次运行的结果可能会相差很大。因为是单线程且串行执行的,所以无法测试多CPU 的能力,只能用于比较单CPU 服务器的性能差别。使用这个套件测试数据库服务器还需要Perl 和BDB 的支持,相关文档请参考.

    Super Smack

      Super Smack是一款用于MySQL 和PostgreSQL的基准测试工具,可以提供压力测试和负载生成。这是一个复杂而强大的工具,可以模拟多用户访问,可以加载测试数据到数据库,并支持使用随机数据填充测试表。测试定义在"smack"文件中,smack 文件使用一种简单的语法定义测试的客户端、表、查询等测试要素。

    Database Test Suite

      Database Test Suite 是由开源软件开发实验室(OSDL,Open Source DevelopmentLabs)设计的,发布在SourceForge 网站上,这是一款类似某些工业标准测试的测试工具集,例如由事务处理性能委员会(TPC,Transaction Processing Performance Council)制定的各种标准。特别值得一提的是,其中的dbt2 就是一款免费的TPC-C OLTP 测试工具(未认证)。之前本书作者经常使用该工具,不过现在已经使用自己研发的专用于MySQL 的测试工具替代了。

    Percona's TPCC-MySQL Tool

      我们开发了一个类似TPC-C 的基准测试工具集,其中有部分是专门为MySQL 测试开发的。在评估大压力下MySQL 的一些行为时,我们经常会利用这个工具进行测试(简单的测试,一般会采用sysbench 替代),在源码库中有一个简单的文档说明。

    sysbench

      sysbench是一款多线程系统压测工具。它可以根据影响数据库服务器性能的各种因素来评估系统的性能。例如,可以用来测试文件I/O、操作系统调度器、内存分配和传输速度、POSIX 线程,以及数据库服务器等。sysbench 支持Lua 脚本语言,Lua 对于各种测试场景的设置可以非常灵活。sysbench 是我们非常喜欢的一种全能测试工具,支持MySQL、操作系统和硬件的硬件测试。(节选自《高性能MySQL》)

    展开全文
  • Mysql基准测试

    千次阅读 2017-01-08 21:29:14
    什么是基准测试 ...Mysql基准测试工具之sysbench什么是基准测试定义基准测试是一种测量和评估软件性能指标的活动,用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能

    什么是基准测试

    定义

    基准测试是一种测量和评估软件性能指标的活动,用于建立某个时刻的性能基准,以便当系统发生软硬件变化时重新进行基准测试以评估变化对性能的影响

    基准测试是针对系统设置的一种压力测试,但是和压力测试还是有区别的

    • 基准测试:直接、简单,易于比较,用于评估服务器的处理能力
    • 基准测试:可能不关心业务逻辑,所使用的查询和业务的真实性可以和业务环境没有关系
    • 压力测试:对真实的业务数据进行测试,获得真实系统所能承受的压力
    • 压力测试:需要针对不同的应用场景,所使用的数据和查询也是真实用到的

    如何进行基准测试

    基准测试的目的

    1. 建立Mysql服务器的性能基准线
    2. 模拟比当前系统更高的负载,以找出系统的扩张瓶颈,增加数据库的并发,观察QPS、TPS变化,确定并发量与性能最优的关系
    3. 测试不同硬件、软件、操作系统配置(mysql版本,磁盘配置等)
    4. 证明新的硬件设备是否配置正确

    如何进行基准测试

    1. 对整个系统进行基准测试

      1. 优点:能够测试整个系统性能,包括web服务器缓存、数据库等,能反映出系统中各个组件接口间的性能问题,体现真实性能状况
      2. 缺点:测试设计复杂,消耗时间长
    2. 从系统入口进行测试(如网站web前端,手机APP前端)
    3. 单独对Mysql进行基准测试

      1. 优点:测试设计简单,所需耗费时间短
      2. 缺点:无法全面了解整个系统的性能基准线

    mysql基准测试的性能指标

    • 单位时间内所处理的事务数(TPS)
    • 单位时间内所处理的查询数(QPS)
    • 响应时间(平均响应时间,最小响应时间,最大响应时间,各时间所占百分比)
    • 并发量:同时处理的查询请求的数量(并发量不等于连接数)

    基准测试的步骤

    计划和设计基准测试

    1. 对整个系统还是某一组件
    2. 使用什么样的数据(比如使用生产环境的数据库备份)
    3. 准备基准测试和数据收集脚本(CPU使用率、IO、网络流量、状态和计数器信息等)
    4. 运行基准测试
    5. 保存和分析基准测试结果

    基准测试中容易忽略的问题

    1. 使用生产环境数据时,只使用了部分数据(应使用全部备份数据)
    2. 在多用户场景中,只做了单用户的测试
    3. 在单服务器上测试分布式应用(推荐使用相同架构进行测试)
    4. 反复执行同一查询(容易缓存命中,无法反应真实查询性能)

    常用的基准测试工具介绍

    Mysql基准测试工具之mysqlslap

    mysql5.1版本后自带的基准测试工具,随Mysql一起安装
    特点:

    • 可以模拟服务器负载,并输出相关统计信息
    • 可以指定也可以自动生成查询语句
    # mysqlslap --help 查看帮助信息
    
    --auto-generate-sql #由系统自动生成SQL脚本进行测试
    --auto-generate-sql-add-autoincrement #在生成的表中增加自增的ID
    --auto-generate-sql-load-type #指定测试中使用的查询类型
    --auto-generate-sql-write-number #指定初始化数据时生成的数据量
    --concurrency #指定并发线程的数量
    --engine #指定测试表的存储引擎,可以用逗号分隔多个表引擎 
    --no-drop #指定不清理测试数据
    --iterations #指定测试运行的次数
    --number-of-queries #指定每一个线程执行的查询数量
    -number-int-cols #指定测试表中包含int类型列的数量
    --number-char-cols #指定测试表包含varchar类型列的数量
    --create-schema #指定了用于测试的数据库的名字
    --query #用于指定自定义SQL的脚本
    --only-print #并不运行测试脚本,而是把生成的脚本打印出来
    #开始测试
    
    mysqlslap --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number-char-cols=10 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --number-of-queries=10 --create-schema=sqltest -p
    
    #上述命令基准测试结果,可以看出innodb在并发时比myisam快很多倍
    Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 0.015 seconds
        Minimum number of seconds to run all queries: 0.015 seconds
        Maximum number of seconds to run all queries: 0.016 seconds
        Number of clients running queries: 1
        Average number of queries per client: 10
    
    Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 1.237 seconds
        Minimum number of seconds to run all queries: 1.061 seconds
        Maximum number of seconds to run all queries: 1.533 seconds
        Number of clients running queries: 50
        Average number of queries per client: 0
    
    Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 2.559 seconds
        Minimum number of seconds to run all queries: 2.525 seconds
        Maximum number of seconds to run all queries: 2.598 seconds
        Number of clients running queries: 100
        Average number of queries per client: 0
    
    Benchmark
        Running for engine myisam
        Average number of seconds to run all queries: 5.552 seconds
        Minimum number of seconds to run all queries: 5.510 seconds
        Maximum number of seconds to run all queries: 5.619 seconds
        Number of clients running queries: 200
        Average number of queries per client: 0
    
    Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.026 seconds
        Minimum number of seconds to run all queries: 0.026 seconds
        Maximum number of seconds to run all queries: 0.028 seconds
        Number of clients running queries: 1
        Average number of queries per client: 10
    
    Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.124 seconds
        Minimum number of seconds to run all queries: 0.107 seconds
        Maximum number of seconds to run all queries: 0.155 seconds
        Number of clients running queries: 50
        Average number of queries per client: 0
    
    Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.136 seconds
        Minimum number of seconds to run all queries: 0.122 seconds
        Maximum number of seconds to run all queries: 0.153 seconds
        Number of clients running queries: 100
        Average number of queries per client: 0
    
    Benchmark
        Running for engine innodb
        Average number of seconds to run all queries: 0.279 seconds
        Minimum number of seconds to run all queries: 0.259 seconds
        Maximum number of seconds to run all queries: 0.313 seconds
        Number of clients running queries: 200
        Average number of queries per client: 0
    

    Mysql基准测试工具之sysbench

    sysbench的安装

    #源码安装的方式
    wget https://github.com/akopytov/sysbench/archive/0.5.zip
    unzip  0.5.zip 
    cd sysbench-0.5/
    #指定mysql的include目录和libs目录,这里需要根据实际环境。
    #可以通过whereis mysql查看
    #[root@fu020 mysql]# whereis mysql
    #mysql: /usr/bin/mysql /usr/lib64/mysql /usr/include/mysql /usr/share/mysql #/usr/share/man/man1/mysql.1.gz
    
    ./configure --with-mysql-includes=/usr/include/mysql  --with-mysql-libs=/usr/lib64/mysql 
    make && make install
    
    sysbench --help
    
    #centos可以用yum
    yum install sysbench
    

    sysbench常用参数

    --test        #用于指定所要执行的测试类型,支持以下参数
           Fileio #文件系统I/O性能测试 
           cpu    #cpu性能测试
           memory #内存性能测试
           oltp   #测试要指定具体的lua脚本
           #lua脚本位于  sysbench-0.5/sysbench/tests/db
    --mysql-db  #用于指定执行基准测试的数据库名
    --mysql-table-engine #用于指定所使用的存储引擎
    --oltp-tables-count #执行测试的表数量
    --oltp-table-size #指定每个表中的数据行数
    --max-time #指定最大的测试时间
    --report-interval #指定间隔多长时间输出一次统计信息
    --mysql-user #指定执行测试的mysql用户
    --mysql-password #指定执行测试的mysql用户的密码
    prepare #用于准备测试数据
    run #用于实际执行测试
    cleanup #用于清理测试数据

    sysbench测试

    1.测试CPU

    sysbench --test=cpu --cpu-max-prime=10000 run #只计算了单核
    

    2.测试I/O

    #生成测试I/O的文件,这里是生成了2G
    cd /tmp
    sysbench --test=fileio  --file-total-size=2G  prepare
    
    #执行I/O测试
    #以下是采用20个进程,随机读写,1秒生成测试报告
    
    sysbench --test=fileio --num-threads=20 --init-rng=on --file-total-size=2G --file-test-mode=rndrw --report-interval=1 run
    
    #I/O测试数据
    [root@fu020 tmp]# sysbench --test=fileio --num-threads=20 --init-rng=on --file-total-size=2G --file-test-mode=rndrw --report-interval=1 run
    sysbench 0.5:  multi-threaded system evaluation benchmark
    
    Running the test with following options:
    Number of threads: 20
    Report intermediate results every 1 second(s)
    Random number generator seed is 0 and will be ignored
    
    
    Extra file open flags: 0
    128 files, 16Mb each
    2Gb total file size
    Block size 16Kb
    Number of IO requests: 10000
    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!
    
    [   1s] reads: 17.94 MB/s writes: 11.97 MB/s fsyncs: 2413.70/s response time: 16.267ms (95%)
    [   2s] reads: 17.84 MB/s writes: 11.89 MB/s fsyncs: 2434.03/s response time: 16.786ms (95%)
    [   3s] reads: 17.23 MB/s writes: 11.48 MB/s fsyncs: 2320.05/s response time: 19.386ms (95%)
    [   4s] reads: 16.41 MB/s writes: 10.81 MB/s fsyncs: 2204.98/s response time: 16.973ms (95%)
    [   5s] reads: 16.02 MB/s writes: 10.83 MB/s fsyncs: 2272.00/s response time: 20.533ms (95%)
    Operations performed:  6008 reads, 3992 writes, 12800 Other = 22800 Total
    Read 93.875Mb  Written 62.375Mb  Total transferred 156.25Mb  (28.462Mb/sec)
     1821.55 Requests/sec executed
    
    General statistics:
        total time:                          5.4898s
        total number of events:              10000
        total time taken by event execution: 58.1353s
        response time:
             min:                                  0.00ms
             avg:                                  5.81ms
             max:                                 69.19ms
             approx.  95 percentile:              17.93ms
    
    Threads fairness:
        events (avg/stddev):           500.0000/34.00
        execution time (avg/stddev):   2.9068/0.09
    

    3.测试数据库

    测试数据库,需要先建立测试用的数据库,和测试用的用户

    mysql> create database sysbenchtest;
    
    #以下可以省略用现有用户
    mysql> grant all privileges on *.* to sbtest@'localhost' identified by '$3F4286';
    
    #进入lua脚本测试目录  /sysbench-0.5/sysbench/tests/db
    
    cd /hotdata/soft/sysbench-0.5/sysbench/tests/db
    //======================================================================
    //下方为sysbench0.4.12的使用方式,这个版本不能一次生成多张表,不能使用--oltp-tables-count参数
    #准备数据库测试数据,注意如果是使用yum安装的,需要指定--db-driver,还有就是密码最好用单引号包住
    #在sysbenchtest测试库中生成了一个100W条数据的innodb表
    sysbench --test=oltp --mysql-table-engine=innodb  --mysql-db=sysbenchtest  --oltp-table-size=1000000 --mysql-user=root --mysql-password='youpassword' --db-driver=mysql  prepare
    
    //======================================================================
    //下方为sysbench0.5的使用方式,这个版本可以一次生成多张表,使用--oltp-tables-count参数
    //以下生成10张100W数据的表
    sysbench --test=./oltp.lua --mysql-table-engine=innodb  --mysql-db=sysbenchtest  --oltp-table-size=1000000 --mysql-user=root --mysql-password='youpassword'  --oltp-tables-count=10 --mysql-socket=/hotdata/database/data/mysql/mysql.sock prepare
    #启用数据库信息收集
    bash get_test_info.sh #下方有贴出代码
    #执行测试
    sysbench --test=./oltp.lua --mysql-table-engine=innodb  --mysql-db=sysbenchtest  --oltp-table-size=1000000 --mysql-user=root --mysql-password='youpassword'  --oltp-tables-count=10 --mysql-socket=/hotdata/database/data/mysql/mysql.sock run
    
    
    #使用下方提供的analysis.sh脚本分析收集的数据
    ./analysis.sh /hotdata/temp/benchmarks/5-sec-status-2017-01-08_08-status
    
    //基准测试
    [root@fu020 db]# sysbench --test=./oltp.lua --mysql-table-engine=innodb  --mysql-db=sysbenchtest  --oltp-table-size=1000000 --mysql-user=root --mysql-password='youpassword'  --oltp-tables-count=10 --mysql-socket=/hotdata/database/data/mysql/mysql.sock run
    sysbench 0.5:  multi-threaded system evaluation benchmark
    
    Running the test with following options:
    Number of threads: 1
    Random number generator seed is 0 and will be ignored
    
    
    Initializing worker threads...
    
    Threads started!
    
    OLTP test statistics:
        queries performed:
            read:                            140000
            write:                           40000
            other:                           20000
            total:                           200000
        transactions:                        10000  (30.35 per sec.)
        read/write requests:                 180000 (546.34 per sec.)
        other operations:                    20000  (60.70 per sec.)
        ignored errors:                      0      (0.00 per sec.)
        reconnects:                          0      (0.00 per sec.)
    
    General statistics:
        total time:                          329.4640s
        total number of events:              10000
        total time taken by event execution: 329.4293s
        response time:
             min:                                  5.30ms
             avg:                                 32.94ms
             max:                                769.65ms
             approx.  95 percentile:             120.47ms
    
    Threads fairness:
        events (avg/stddev):           10000.0000/0.00
        execution time (avg/stddev):   329.4293/0.00
    
    #get_test_info.sh
    #!/bin/bash
    INTERVAL=5 #脚本运行间隔
    PREFIX=/hotdata/temp/benchmarks/$INTERVAL-sec-status #状态信息记录到什么位置
    RUNFILE=/hotdata/temp/benchmarks/running  #运行标识
    echo "1" > $RUNFILE #生成运行标识
    MYSQL=/usr/bin/mysql #mysql命令的路径
    $MYSQL -e "show global variables" >> mysql-variables #mysql的设置信息
    while test -e $RUNFILE; do
        file=$(date +%F_%I)
        sleep=$(date +%s.%N | awk '{print 5 - ($1 % 5)}')
        sleep $sleep #脚本的运行时间
        ts="$(date +"TS %s.%N %F %T")"
        loadavg="$(uptime)" #收集脚本的负载情况
        echo "$ts $loadavg" >> $PREFIX-${file}-status #记录到文件中
        $MYSQL -e "show global status" >> $PREFIX-${file}-status & #收集mysql全局状态信息并记录到文件
        echo "$ts $loadavg" >> $PREFIX-${file}-innodbstatus
        $MYSQL -e "show engine innodb status" >> $PREFIX-${file}-innodbstatus & #收集innodb状态信息
        echo "$ts $loadavg" >> $PREFIX-${file}-processlist
        $MYSQL -e "show full processlist\G" >> $PREFIX-${file}-processlist &
        echo $ts
    done
    echo Exiting because $RUNFILE does not exists
    #Analysis.sh
    #!/bin/bash
    awk '
       BEGIN {
         printf "#ts date time load QPS";
         fmt=" %.2f";
       }
       /^TS/ {
       ts = substr($2,1,index($2,".")-1);
       load = NF -2;
       diff = ts - prev_ts;
       printf "\n%s %s %s %s",ts,$3,$4,substr($load,1,length($load)-1);
       prev_ts=ts;
       }
       /Queries/{
       printf fmt,($2-Queries)/diff;
       Queries=$2
       }
       ' "$@"

    参考链接:
    mysqlslap 使用总结
    sysbench安装、使用、结果解读
    sysbench 安装、使用和测试
    mysql benchmark基准测试

    展开全文
  • 今天准备给mysql做个压力测试,所以就相装个tcpp-mysql压一把看看,尼玛网上一搜基本都是一个模子里出来的,下载tcpp-mysql全是一个网站(不是官网),而且还是14年的,下边我是从官网下载的 tcpp-mysql项目地址在这里...

         今天准备给mysql做个压力测试,所以就相装个tpcc-mysql压一把看看,尼玛网上一搜基本都是一个模子里出来的,下载tpcc-mysql全是一个网站(不是官网),而且还是14年的,下边我是从官网下载的

    tcpp-mysql项目地址在这里:https://code.launchpad.net/~percona-dev/perconatools/tpcc-mysql

    现在tpcc-mysql代码都放到github上了,

    地址:https://github.com/Percona-Lab/tpcc-mysql

    代码下载地址:https://github.com/Percona-Lab/tpcc-mysql/archive/master.zip

    1:我把代码下载在/opt目录里

     wget https://github.com/Percona-Lab/tpcc-mysql/archive/master.zip

    下载下来是个名为master.zip的包,我把他改成tpcc-mysql-master.zip,用mv就可以该名称mvmaster.ziptpcc-mysql-master.zip

    2:打开包 unzip tpcc-mysql-master.zip

      进入/opt/tpcc-mysql-master/src

     执行 make命令出现如下界面


    这个时候进入/opt/tpcc-mysql-master目录会看到生成了两个文件:tpcc_load ,tpcc_start

    tpcc_load  提供初始化数据的功能
     
    tpcc_start 进行压力测试


    /opt/tpcc-mysql-master目录下有几个sql文件挺重要的

    create_table.sql:创建所需的数据库表,共9个表
    add_fkey_idx.sql:创建索引和外键
    drop_cons.sql:删除约束


    进入/opt/tpcc-mysql-master目录,执行

    ./tpcc_load localhost tpcc100 root 'root' 1如果报


    则有可能是下载的包有问题,需要换个包

    下载地址:http://imysql.com/wp-content/uploads/2014/09/tpcc-mysql-src.tgz

    下载到本地/opt/目录下

      1:先执行 gunzip 解压缩文件比如gunziptpcc-mysql-src.tgz

      2:然后解包 tar -xf 解包

    进入/opt/tpcc-mysql/src

     执行 make命令出现如下界面

    直接 tar zxf 可能会报告异常
    执行./tpcc_load localhost tpcc100 root 'root' 1这时就不会报错了


    创建表结构:

     mysql -S /tmp/mysql3306.sock -u root -p tpcc100<create_table.sql;

     mysql -S /tmp/mysql3306.sock -u root -p tpcc100<add_fkey_idx.sql;


    导入数据:./tpcc_load localhost tpcc100 root 'root' 1

    tpcc_load [server] [DB] [user] [pass] [warehouse]
    Server: 服务器名
    DB: 数据库名
    user: 用户名
    pass: 密码
    Warehouse: 仓库的数量 ,一般不小于100,ssd的大于1000,我本地是虚拟机环境,所以设置为1

    tpcc_start压测:

    tpcc_start -h server_host -P port -d database_name -u mysql_user -p mysql_password -w warehouses -c connections -r warmup_time -l running_time -i report_interval -f report_file
    各个参数的用法:
    -h server_host: 服务器名
    -P port : 端口号,默认为3306
    -d database_name: 数据库名
    -u mysql_user : 用户名
    -p mysql_password : 密码
    -w warehouses: 仓库的数量
    -c connections : 指定并发连接数,默认为1
    -r warmup_time : 热身时间,单位:s,默认为10s ,热身是为了将数据加载到内存。
    -l running_time: 测试时间,单位:s,默认为20s
    -i report_interval: 指定生成报告间隔时长
    -f report_file: 测试结果输出文件


    ./tpcc_start -hlocalhost -d tpcc100 -u root -p 'root' -w 1 -c 2 -r 20 -l 300 -f tpcc_mysql_02.log


    没10秒出一次压测数据


    上图以逗号分隔,共6列
       第一列,第N次10秒
       第二列,新订单成功执行压测的次数(推迟执行压测的次数):90%事务的响应时间|本轮测试最大响应时间,新订单事务数也被认为是总有效事务数的指标
       第三列,支付业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
       第四列,订单状态业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
       第五列,物流发货业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间
       第六列,库存仓储业务成功执行次数(推迟执行次数):90%事务的响应时间|本轮测试最大响应时间

    压测结束,下边是两次统计结果


    解释:

      [0] New-Order,新订单业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数

      [1] sc:100552  lt:0  rt:0  fl:0    -- Payment,支付业务统计,支付业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数

      [2] sc:10059  lt:0  rt:0  fl:0    -- Order-Status,订单状态业务统计,订单状态业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数

      [3] sc:10057  lt:0  rt:0  fl:0    -- Delivery,发货业务统计,发货业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数

      [4] sc:10058  lt:0  rt:0  fl:0    -- Stock-Level,库存业务统计,库存业务成功(success,简写sc)次数,延迟(late,简写lt)次数,重试(retry,简写rt)次数,失败(failure,简写fl)次数


    Payment 付业务占总业务43.47%


    2078.000 TpmC   //TpmC结果值(每分钟事务数,该值是第一次统计结果中的新订单事务数除以总耗时分钟数,例如本例中是:10391/300/60 = 2078

    script目录下的一些脚本主要是一些性能数据采集以及分析的

    展开全文
  • 测试MySQL脚本时所遇到的问题

    千次阅读 2016-06-02 18:59:21
    近期,笔者在做MySQL脚本的移植和测试工作。在此过程中,发现了MySQL数据库所存在的一些有待优化的地方,特写下此文,供相关项目的开发人员参考。
  • php + nginx+mysql 网站并发压力测试

    千次阅读 2017-12-21 19:21:14
    一、测试工具:Apache 压力测试工具abab是针对apache的性能测试工具,非常容易使用,并且完全可以摸你各种条件对Web服务器发起测试请求。ab可以直接在Web服务器本地发起测试请求,这对于需要了解服务器的处理性能至...
  • CentOS服务器压力测试MySQL压力测试

    千次阅读 2018-07-10 14:34:08
    Sysbench是一个跨平台的基准测试工具。基准测试是对数据库的性能指标进行定量的、可复现的、可对比的测试。基准测试可以理解为针对系统的一种压力测试。但基准测试不关心业务逻辑,更加简单、直接、易于测试,数据...
  • 一.Mysql数据库的几种压力测试工具: 1.mysqlslap 安装:简单,装了mysql就有了作用:模拟并发测试数据库性能。优点:简单,容易使用。不足:不能指定生成的数据规模,测试过程不清楚针对十万级还是百万级...
  • MySQL压力测试工具

    千次阅读 2011-06-01 14:00:00
    第一、mysqlslap mysqlslap是一个mysql官方提供的压力测试工具。以下是比较重要的参数: –defaults-file,配置文件存放位置 –concurrency,并发数 –engines,引擎 –iterations,...
  • Mysql数据库引擎性能测试

    千次阅读 2013-12-26 19:30:12
    Innordb的功能要比myiasm强大很多,但是innordb的性能要比myisam差很多,如果你的网站只是做简单的查询,更新,删除,那么用myiasm是最好的选择。 所有的性能测试在:Micrisoft window xp sp2 , Intel(R) ...
  • MySQL口令扫描渗透测试攻略

    千次阅读 2018-07-07 18:37:36
    抱着研究的目地,将目前市面上主流的7款MySQL口令扫描工具进行实际测试,并给出了实际利用场景的具体命令,在进行渗透测试时,具有较高的参考价值。1.测试环境:Windows 2003 Server +PHP+MySQL5.0.90-community...
  • MongoDB与MySQL的插入、查询性能测试

    千次阅读 2017-06-20 17:43:40
    1.1 MongoDB的简单介绍 ...在当今的数据库市场上,...作为一个开源的关系型数据库,mysql被大量应用在各大网站后台中,承担着信息存储的重要作用。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为oracle旗下
  • 基准测试结果显示,与MySQL 5.7相比,MySQL 8.0不仅在处理读负载时,而且在读写混合的高负载下的性能都取得了令人瞩目的进步。 再来看MySQL 8.0的新特性,看起来它不仅利用了最新的软件技术(如Memcached的改进,...
  • [渗透测试] MySQL

    千次阅读 2015-05-28 17:05:55
    MySQL通常运行在Linux、FreeBSD服务器的TCP3306端口。 一、MySQL枚举 $telnet 10.0.0.8 3306 Trying 10.0.0.8... Connected to 10.0.0.8. Escape character is '^]'. ( 3.23.52D~n.7i.G, Connection closed by ...
  • 用Php测试mysql数据库是否安装成功

    千次阅读 2013-12-30 20:46:31
    建立一个testsql.php文件 但是当我们访问该文件的时候,却出现了问题 这是因为目前没有启用mysql,如何启用呢
  • JSP连接Mysql数据库测试

    千次阅读 2018-09-13 22:26:17
    创建动态网站项目,将mysql-connector-java-5.1.45-bin.jar拷贝到项目的WebContent\WEB-INF\lib路径下。 在MySQL数据库中,创建数据库Student,在Student数据库中添加数据表stu_info,并对应添加id,name,phone字段...
  • 对于这个问题刚开始我以为是我mysql的环境变量没有设置好,在网上搜了很多,感觉也没有什么可用的信息,(也许有只是我不能理解而已),就在一个貌似专门提供libxss1.so.1的网站上下了一个,要命的是那个网站提供很...
  • MySQL数据库面试题(2020最新版)

    万次阅读 多人点赞 2020-03-10 17:20:40
    数据库三大范式是什么mysql有关权限的表都有哪几个MySQL的binlog有有几种录入格式?分别有什么区别?数据类型mysql有哪些数据类型引擎MySQL存储引擎MyISAM与InnoDB区别MyISAM索引与InnoDB索引的区别?InnoDB引擎的4...
  • MongoDB与MySQL的对比及性能测试

    千次阅读 2016-10-20 14:08:05
    最近的项目使用了Mongodb和Mysql,以前只用Mysql,没有接触过...作为一个开源的关系型数据库,MySQL被大量应用在各大网站后台中,承担着信息存储的重要作用。2009年,甲骨文公司(Oracle)收购Sun公司,MySQL成为Ora
  • Mysql的简单QPS测试(单机)

    千次阅读 2012-11-16 12:38:04
    MySQL官方网站下载: 1、MySQL-server-5.5.28-1.rhel4.i386.rpm 2、java驱动 mysql-connector-java-5.1.5-bin.jar   测试服务器为Dell E5410 的Debian linux 2.6,配置为: 1、4核,2.33GHz 2、内存3G 3、...
  • Mysql Proxy 0.8 更新细节以及简单测试

    千次阅读 2010-01-26 16:51:00
    上午看到Mysql网站Mysql Proxy在半年后终于更新了,抓来尝尝鲜,测试了一下。另:转载的请留个我的连接,谢谢。 Mysql Proxy 0.8 Simple Test ChangeLog 1 兼容性修复 客户端使用早于4.0的Mysql协议引起段故障...
  • MySQL如何生成大批量测试数据

    千次阅读 2021-01-31 13:19:30
    不管是为了做生产数据脱敏,还是为了验证某个技术是否符合期望,亦或是做简单的集成测试,短时间内生成大批量测试数据是很有必要的,但就算是测试数据也要假的像样点嘛,数据不够假,你放到演示环境,怎么给客户吹牛...
  • 2 数据库连接测试mysql 3 测试结果1 虚拟主机说明  万网虚拟主机信息:   2 网站简易搭建2.1 上传网页  ftp上传方式,如使用ftp上传软件FileZilla上传测试网页index.php。   2.2 数据库连接测试(mysql)...
  • mySQL

    千次阅读 2009-03-05 14:03:00
    不管怎样,在经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。这导致了一个使用几乎和mSQL一样的API接口的用于他们的数据库的新的SQL接口的产生,这样,这个API被设计成允许为用于mSQL而写的第...
  • MySQL中MyISAM和InnoDB存储引擎在使用Fulltext字段全文检索的一些性能对比
  • MySQL5.6 InnoDB FULLTEXTIndexes研究测试

    万次阅读 2013-10-16 14:43:11
    InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引。对于FULLTEXT索引的内容可以使用MATCH()…AGAINST语法进行查询。 为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6...
  • mysql 基准测试和性能分析

    千次阅读 2013-05-23 12:17:29
    一、 在对网站整体性能进行benchmark时,可以使用多种...重点来说MySQL的基准测试如何进行,也有很多种工具来供我们选择,比如mysqlslap、sysbench、Super Smack等,其中mysqlslap的使用MySQL官网给出了介绍,Super Sm
  • mysql 性能测试——sysbench工具使用

    千次阅读 2011-03-01 09:42:00
    sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况。关于这个项目的详细介绍请看:http://sysbench.sourceforge.net。 <br />它主要包括以下几种方式...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 134,311
精华内容 53,724
关键字:

网站测试mysql

mysql 订阅