• mysqlslap详解--MySQL自带的性能压力测试工具(转)


     本文的参考博客地址为:https://blog.csdn.net/fuzhongfaya/article/details/80943991 和 https://www.cnblogs.com/davygeek/p/5253830.html

    本文的目的一方面是自己整理,防止后续忘记,一方面是对参考博客的进行验证.

    首先在这里介绍一下常用的参数及其说明:

    --auto-generate-sql, -a 自动生成测试表和数据,表示用mysqlslap工具自己生成的SQL脚本来测试并发压力。

    --auto-generate-sql-load-type=type 测试语句的类型。代表要测试的环境是读操作还是写操作还是两者混合的。取值包括:read,key,write,update和mixed(默认)。

    --auto-generate-sql-guid-primary 增加基于GUID的主键

    --auto-generate-sql-add-auto-increment 代表对生成的表自动添加auto_increment列,从5.1.18版本开始支持。
    --number-char-cols=N, -x N 自动生成的测试表中包含多少个字符类型的列,默认1
    --number-int-cols=N, -y N 自动生成的测试表中包含多少个数字类型的列,默认1
    --number-of-queries=N 总的测试查询次数(并发客户数×每客户查询次数)
    --query=name,-q 使用自定义脚本执行测试,例如可以调用自定义的一个存储过程或者sql语句来执行测试。
    --create-schema 代表自定义的测试库名称,测试的schema,MySQL中schema也就是database。
    --commint=N 多少条DML后提交一次。
    --compress, -C 如果服务器和客户端支持都压缩,则压缩信息传递。
    --concurrency=N, -c N 表示并发量,也就是模拟多少个客户端同时执行select。可指定多个值,以逗号或者--delimiter参数指定的值做为分隔符。例如:--concurrency=100,200,500。
    --engine=engine_name, -e engine_name 代表要测试的引擎,可以有多个,用分隔符隔开。例如:--engines=myisam,innodb。
    --iterations=N, -i N 测试执行的迭代次数,代表要在不同并发环境下,各自运行测试多少次。
    --only-print 只打印测试语句而不实际执行。
    --detach=N 执行N条语句后断开重连。
    --debug-info, -T 打印内存和CPU的相关信息。

    执行测试:

    1.执行测试并打印测试的详细过程:mysqlslap -a -uroot -proot  --only-print

     可以看到执行测试的过程首先是创建schema ,然后再是创建表,测试结束的时候回删除表以及删除schema

    2.分别用50和100个客户端连接去测试100条查询

     mysqlslap -a -uroot -proot --concurrency=50,100 --number-of-queries=100

     可以看到对应的每个连接上分配到的查询数平均值分别为2和1 

    3. 实际测试中的复杂情况。 

    使用 --number-int-cols 选项,指定表中会包含 4 个 int 型的列。 
    使用 --number-char-cols 选项,指定表中会包含 35 个 char 型的列。 
    使用 --engine 选项,指定针对何种存储引擎进行测试。 

    mysqlslap –uroot -proot --concurrency=50 --iterations=1 --number-int-cols=2--number-char-cols=1 --auto-generate-sql --auto-generate-sql-add-autoincrement --auto-generate-sql-load-type=mixed --engine=myisam,innodb --number-of-queries=200 --only-print

    可以看出生成的默认sql语句和表结构已经有了变化,除了自增列外包含2个数字列和一个varchar 列

     4、实现基于自定义的sql语句进行性能测试

    mysqlslap –uroot -proot --delimiter=";" --create="CREATE TABLE a (b int);INSERT INTO a VALUES (23)" --query="SELECT * FROM a" --concurrency=50 --iterations=200

  • 相关阅读:
    操作SQL Server Mobile数据库的常用C#代码
    关于asp.net c#中对cookie的操作
    javascript的常用string操作——join,replace和replaceAll的实现
    类似google日历的web日历控件——FullCalendar
    javascript的常用string操作——join,replace和replaceAll的实现
    类似google日历的web日历控件——FullCalendar
    Axure RP 6.5中文汉化包及汉化方法
    在python中使用cx_Oracle模块出现“DLL Load failed”的处理方法
    在python中使用cx_Oracle模块出现“DLL Load failed”的处理方法
    Axure RP 6.5中文汉化包及汉化方法
  • 原文地址:https://www.cnblogs.com/cheng21553516/p/11374840.html
Copyright © 2020-2023  润新知