热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

mysqlslap_MySQL性能测试工具之mysqlslap使用详解

mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而

mysqlslap是mysql自带的基准测试工具,优点:查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较.msqlslap为mysql性能优化前后提供了直观的验证依据,建议系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其抗压性等问题。

常用的选项

--concurrency    并发数量,多个可以用逗号隔开

--engines      要测试的引擎,可以有多个,用分隔符隔开,如--engines=myisam,innodb

--iterations     要运行这些测试多少次

--auto-generate-sql        用系统自己生成的SQL脚本来测试

--auto-generate-sql-load-type    要测试的是读还是写还是两者混合的(read,write,update,mixed)

--number-of-queries          总共要运行多少次查询。每个客户运行的查询数量可以用查询总数/并发数来计算

--debug-info              额外输出CPU以及内存的相关信息

--number-int-cols           创建测试表的int型字段数量

--number-char-cols             创建测试表的chat型字段数量

--create-schema            测试的database

--query自己的SQL           脚本执行测试

--only-print                如果只想打印看看SQL语句是什么,可以用这个选项

各种测试参数实例(-p后面跟的是mysql的root密码):

单线程测试。测试做了什么。

# mysqlslap -a -uroot -p123456

多线程测试。使用–concurrency来模拟并发连接。

# mysqlslap -a -c 100 -uroot -p123456

迭代测试。用于需要多次执行测试得到平均值。

# mysqlslap -a -i 10 -uroot -p123456

# mysqlslap ---auto-generate-sql-add-autoincrement -a -uroot -p123456

# mysqlslap -a --auto-generate-sql-load-type=read -uroot -p123456

# mysqlslap -a --auto-generate-secondary-indexes=3 -uroot -p123456

# mysqlslap -a --auto-generate-sql-write-number=1000 -uroot -p123456

# mysqlslap --create-schema world -q "select count(*) from City" -uroot -p123456

# mysqlslap -a -e innodb -uroot -p123456

# mysqlslap -a --number-of-queries=10 -uroot -p123456

测试同时不同的存储引擎的性能进行对比:

# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --engine=myisam,innodb --debug-info -uroot -p123456

执行一次测试,分别50和100个并发,执行1000次总查询:

# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --debug-info -uroot -p123456

50和100个并发分别得到一次测试结果(Benchmark),并发数越多,执行完所有查询的时间越长。为了准确起见,可以多迭代测试几次:

# mysqlslap -a --concurrency=50,100 --number-of-queries 1000 --iterations=5 --debug-info -uroot -p123456

实例1

说明:测试100个并发线程,测试次数1次,自动生成SQL测试脚本,读、写、更新混合测试,自增长字段,测试引擎为innodb,共运行5000次查询

#mysqlslap -h127.0.0.1 -uroot -p123456789 --concurrency=100 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=5000

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.351 seconds    100个客户端(并发)同时运行这些SQL语句平均要花0.351秒

Minimum number of seconds to run all queries: 0.351 seconds

Maximum number of seconds to run all queries: 0.351 seconds

Number of clients running queries: 100              总共100个客户端(并发)运行这些sql查询

Average number of queries per client:50            每个客户端(并发)平均运行50次查询(对应--concurrency=100,--number-of-queries=5000;5000/100=50)

实例2

#mysqlslap -h127.0.0.1 -uroot -p123456789 --concurrency=100,500,1000 --iterations=1 --auto-generate-sql --auto-generate-sql-load-type=mixed --auto-generate-sql-add-autoincrement --engine=innodb --number-of-queries=5000 --debug-info

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.328 seconds

Minimum number of seconds to run all queries: 0.328 seconds

Maximum number of seconds to run all queries: 0.328 seconds

Number of clients running queries: 100

Average number of queries per client: 50

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.358 seconds

Minimum number of seconds to run all queries: 0.358 seconds

Maximum number of seconds to run all queries: 0.358 seconds

Number of clients running queries: 500

Average number of queries per client: 10

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.482 seconds

Minimum number of seconds to run all queries: 0.482 seconds

Maximum number of seconds to run all queries: 0.482 seconds

Number of clients running queries: 1000

Average number of queries per client: 5

User time 0.21, System time 0.78

Maximum resident set size 21520, Integral resident set size 0

Non-physical pagefaults 12332, Physical pagefaults 0, Swaps 0

Blocks in 0 out 0, Messages in 0 out 0, Signals 0

Voluntary context switches 36771, Involuntary context switches 1396

实例3(自定义sql语句)

#mysqlslap -h127.0.0.1 -uroot -p123456789 --concurrency=100 --iterations=1 --create-schema=rudao --query='select * from serverlist;' --engine=innodb --number-of-queries=5000 --debug-info

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.144 seconds

Minimum number of seconds to run all queries: 0.144 seconds

Maximum number of seconds to run all queries: 0.144 seconds

Number of clients running queries: 100

Average number of queries per client: 50

User time 0.05, System time 0.09

Maximum resident set size 6132, Integral resident set size 0

Non-physical pagefaults 2078, Physical pagefaults 0, Swaps 0

Blocks in 0 out 0, Messages in 0 out 0, Signals 0

Voluntary context switches 6051, Involuntary context switches 90

实例4(指定sql脚本)

#mysqlslap -h127.0.0.1 -uroot -p123456789 --concurrency=100 --iterations=1 --create-schema=rudao --query=/tmp/query.sql --engine=innodb --number-of-queries=5000 --debug-info

Warning: Using a password on the command line interface can be insecure.

Benchmark

Running for engine innodb

Average number of seconds to run all queries: 0.157 seconds

Minimum number of seconds to run all queries: 0.157 seconds

Maximum number of seconds to run all queries: 0.157 seconds

Number of clients running queries: 100

Average number of queries per client: 50

User time 0.07, System time 0.08

Maximum resident set size 6152, Integral resident set size 0

Non-physical pagefaults 2107, Physical pagefaults 0, Swaps 0

Blocks in 0 out 0, Messages in 0 out 0, Signals 0

Voluntary context switches 6076, Involuntary context switches 89



推荐阅读
  • 本文详细介绍了如何使用Linux下的mysqlshow命令来查询MySQL数据库的相关信息,包括数据库、表以及字段的详情。通过本文的学习,读者可以掌握mysqlshow命令的基本语法及其常用选项。 ... [详细]
  • 深入解析轻量级数据库 SQL Server Express LocalDB
    本文详细介绍了 SQL Server Express LocalDB,这是一种轻量级的本地 T-SQL 数据库解决方案,特别适合开发环境使用。文章还探讨了 LocalDB 与其他轻量级数据库的对比,并提供了安装和连接 LocalDB 的步骤。 ... [详细]
  • 构建Python自助式数据查询系统
    在现代数据密集型环境中,业务团队频繁需要从数据库中提取特定信息。为了提高效率并减少IT部门的工作负担,本文探讨了一种利用Python语言实现的自助数据查询工具的设计与实现。 ... [详细]
  • 本文探讨了Android系统中联系人数据库的设计,特别是AbstractContactsProvider类的作用与实现。文章提供了对源代码的详细分析,并解释了该类如何支持跨数据库操作及事务处理。源代码可从官方Android网站下载。 ... [详细]
  • binlog2sql,你该知道的数据恢复工具
    binlog2sql,你该知道的数据恢复工具 ... [详细]
  • 本文探讨了如何在PHP与MySQL环境中实现高效的分页查询,包括基本的分页实现、性能优化技巧以及高级的分页策略。 ... [详细]
  • 本文介绍了如何在两个Oracle数据库(假设为数据库A和数据库B)之间设置DBLink,以便能够从数据库A中直接访问和操作数据库B中的数据。文章详细描述了创建DBLink前的必要准备步骤以及具体的创建方法。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 本文详细介绍了Oracle RMAN中的增量备份机制,重点解析了差异增量和累积增量备份的概念及其在不同Oracle版本中的实现。通过对比两种备份方式的特点,帮助读者选择合适的备份策略。 ... [详细]
  • SQL 数据恢复技巧:利用快照实现高效恢复
    本文详细介绍了如何在 SQL 中通过数据库快照实现数据恢复,包括快照的创建、使用及恢复过程,旨在帮助读者深入了解这一技术并有效应用于实际场景。 ... [详细]
  • 本文由公众号【数智物语】(ID: decision_engine)发布,关注获取更多干货。文章探讨了从数据收集到清洗、建模及可视化的全过程,介绍了41款实用工具,旨在帮助数据科学家和分析师提升工作效率。 ... [详细]
  • 搭建个人博客:WordPress安装详解
    计划建立个人博客来分享生活与工作的见解和经验,选择WordPress是因为它专为博客设计,功能强大且易于使用。 ... [详细]
  • Maven + Spring + MyBatis + MySQL 环境搭建与实例解析
    本文详细介绍如何使用MySQL数据库进行环境搭建,包括创建数据库表并插入示例数据。随后,逐步指导如何配置Maven项目,整合Spring框架与MyBatis,实现高效的数据访问。 ... [详细]
  • 本文探讨了在SQL Server 2008环境下,当尝试删除拥有数据库架构的用户时遇到的问题及解决方案,包括如何查询和更改架构所有权。 ... [详细]
  • 解决JavaScript中法语字符排序问题
    在开发一个使用JavaScript、HTML和CSS的Web应用时,遇到从SQLite数据库中提取的法语词汇排序不正确的问题,特别是带重音符号的字母未按预期排序。 ... [详细]
author-avatar
贝贝不离
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有