• MSQL的基准测试


    Mysql基准测试

    基准测试

    直接、简单、易于比较,用于评估服务器的处理能力
    

    压力测试

    对真实的月数据进行测试,获得真是系统所能承受的压力
    

    基准测试的目的

    1、建立MySQL服务器的性能基准线
    2、模拟比当前系统更高的负载,以找出系统的扩展瓶颈
    3、测试不同的硬件、软件和操作系统配置
    4、证明新硬件设备是否配置正确
    

    如何进行基准测试

    1、对整个系统进行基准测试
         优点:能够测试正而过系统的性能,包括web服务器、缓存、数据库等,能反映出系统中各个组件接口间的性能问题体现真实性能状况
         缺点:测试设计复杂,耗费的时间过长
    2、单独MySQL进行基准测试
         优点:测试设计简单,所耗时的时间更短
         缺点:无法全面了解整个系统的性能基准线
    

    MySQL基准测试的常见指标

     1、单位时间内所处理的事务数(TPS)
     2、单位时间内所处理的查询数(QPS)
     3、相应时间
          平均相应时间,最小相应时间,最大相应时间。各个时间所占百分比
     4、并发量:同事处理的查询请求的数量
    

    基准测试的步骤

    计划和设计基准测试

     1、对整个系统还是某一组件
     2、使用什么样的数据(最好是备份的数据,或者某个时间段内的数据)
     3、准备基准测试及数据库收集脚本
     4、运行基准测试脚本
     5、保存及分析基准测试结果
    

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

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

    基准测试的工具介绍

    MySQL基准测试工具之 mysqlslap

       下载及安装:
            MySQL服务器自带的基准测试工具,随MySQL一起安装
        特点:
            1、可以模拟服务器负载,并输出相关统计信息
            2、可以指定也可以自动生成查询语句
        
        常见参数说明:
            --auto-generate-sql 由系统自动生成SQL脚本进行测试
            --auto-generate-sql-add-autoincrement 再生成表中增加自增ID
            --auto-generate-sql-load-type 指定测试中使用的查询类型
            --auto-genrate-sql-write-number 指定初始化数据时生成的数据量
            --concurrency 指定并发线程的数量
            --engine 指定测试表的存储引擎,可以使用逗号分隔多个存储引擎
            --no-drop 指定不清理测试数据
            --iterations 指定测试运行的测试
            --numbers-of-queries 指定每一个线程执行的查询数量
            --debug-info 指定输出额外的内存及cpu统计信息
            --number-int-cols 指定测试表中包含的INTl类型的数量
            --number-char-cols 指定测试表中包含的varchar类型的数量
            --create-schema 指定了用于执行测试的数据库的名字
            --query 用于指定自定义的SQL的脚本
            --noly-print 并不运行测试脚本,而是把生成的脚本打印出来
        
        举例测试命令:
            ]# mysqlslap --concurrency=1,50,100,200 --iterations=3 --number-int-cols=5 --number-char-cols=5 --auto-generate-sql --auto-generate-sql-add-autoincrement --engine=myisam,innodb --number-of-queries=10 --create-schema=test -p
    
        说明:
            测试的过程需要生成测试表,插入测试数据,这个mysqlslap可以自动生成,默认生成一个mysqlslap的schema,如果已经存在则先删除。可以用--only-print来打印实际的测试过程,整个测试完成后不会在数据库中留下痕迹。
    
    mysqlslap执行测试截图

    MySQL基准测试工作之 sysbench

        安装说明:
            github地址:https://github.com/akopytov/sysbench/
            1、源码包
                ]# yum install automake libtool -y
                ]# cd /usr/local && wget https://github.com/akopytov/sysbench/archive/master.zip
                ]# unzip master.zip
                ]# cd sysbench-master/
                ]# ./autogen.sh
                ]# ./configure --with-mysql-includes=/usr/local/mysql/include/ --with-mysql-libs=/usr/local/mysql/lib
                ]# make -j 2 && make install 
            2、yum安装
                ]# curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | sudo bash
                ]# sudo yum -y install sysbench
            
        常用参数说明:
            用于指定索要执行的测试类型,支持以下参数
                Fileio 文件系统I/O性能测试
                cpu cpu性能测试
                memory 内存性能测试
                OLTP 测试要指定具体的lua脚本
            
            --mysql-db 用于指定执行基准测试数据库的名称
            --mysql-table-engine 用于所使用过的存储引擎
            --num-threads 指定测试的并发线程的数量
            --max-time 指定最大的测试时间
            --report-interval 指定间隔时间输出一次统计信息
            --mysql-password 指定执行测试的MySQL用户名的密码
    
    测试CPU性能
    ~]# sysbench --test=cpu --cpu-max-prime=20000 run
          --cpu-max-prime=N  最大质数发生器数量。默认是10000
    

    线程测试
    ]# sysbench --test=threads --num-threads=64 --thread-yields=100 --thread-locks=2 run
        --num-threads=64     开启的线程数量
        --thread-yields=100   每个线程请求的数量
        --thread-locks=2       每个线程的锁数量为2
    

    测试磁盘IO性能
    首先需要创建测试所使用的文件
       ]#  sysbench --test=fileio --num-threads=16 --file-total-size=3 --file-test-mode=rndrw prepare
    
    其次进行磁盘IO测试
        ]# sysbench --test=fileio --num-threads=16 --file-total-size=3 --file-test-mode=rndrw run
    
    最后测试完成后,用以下命令清除测试时 创建的测试文件
        ]# sysbench --test=fileio --num-threads=16 --file-total-size=3 --file-test-mode=rndrw cleanup
    

    测试内存性能
    ~]# sysbench --test=memory --memory-block-size=8k --memory-total-size=4G run
        --memory-block-size        测试内存的块大小,默认为1K
        --memory-total-size         测试需要传送数据的大小
    

    原创作品,转载请注明出处:http://www.cnblogs.com/demon89/p/8494523.html
  • 相关阅读:
    经典SQL问题: 行转列,列转行
    RocketMQ之三:RocketMQ集群环境搭建
    mysql函数之五:group_concat mysql 把结果集中的一列数据用指定分隔符转换成一行
    并发编程之五--ThreadLocal
    RocketMQ之三:nameserver源码解析
    Spring之3:BeanFactory、ApplicationContext、ApplicationContextAware区别
    spring中InitializingBean接口使用理解
    ES之四:Elasticsearch Mapping类型映射概述与元字段类型
    spring容器启动的三种方式
    java的reflection和introspector
  • 原文地址:https://www.cnblogs.com/demon89/p/8494523.html
Copyright © 2020-2023  润新知