MySQL小工具 之 压测Groovy

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
性能测试 PTS,5000VUM额度
简介:
 

用Groovy编写的一个简单的MySQL给压力的工具,原先是用python写的,但是发现MySQLdb在liunx下性能不佳,就改用Groovy来实现了,支持简单的分表,支持useServerPrepStmts

这里有两个版本

mysql_test.groovy  : 他的各类SQL的比例完全按照 设的的比率执行,比如100:1的读写比,那么MySQL执行的读写SQL肯定也是100:1  mysql_test_for_thd.groovy  : 他的SQL执行比率是线程比,如果设的100:1的读写比 那么就是100个线程(连接)去读,1个线程(连接)去写

用这个工具来简单的给压力和造数据是不错的选择.

Example:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import  java.util.concurrent.atomic.AtomicLong
 
def  mt = ``new  mysql_test(url: ``"jdbc:[mysql://127.0.0.1:3306/test?characterEncoding=GBK&useServerPrepStmts=true&cachePrepStmts=true](3306/test?characterEncoding=GBK&useServerPrepStmts=true&cachePrepStmts=true)"``,
        ``usr: ``"test"``, pwd: ``"test"``, table_name: ``"test"``)
mt.table_num = ``1  //分表的数量
mt.run_times = ``2500   //执行的总次数
mt.thread_num = ``100  //启用线程数(连接数),如果是mysql_test_for_thd 此值没有意义
 
def  select_id = ``new  AtomicLong(1L) ``//设定一个起始的读id
def  update_id = ``new  AtomicLong(1L) ``//设定一个起始的写id
 
mt.add_sql(``"""select * from no_id where uuid='#id#'"""``,
        ``{id -> [``"id"``: select_id.getAndAdd(``1``)]},
        ``100``) ``//加入一个读的SQL ,id从1开始执行一次就加1,读比是100 如果是mysql_test_for_thd 就是启100个线程来执行这个sql, 其中第二个参数id,是内部生成的一个自增id,如果第二个参数id对应的是List的话,会使用useServerPrepStmts,来逐个匹配参数
 
mt.add_sql(``"""insert into test value(null,#id#,'nick:#id#','fullname:#id#','phone:#id#',#id#)"""``,
        ``{id -> [``"id"``: update_id.getAndAdd(``1``)]},
        ``10``) ``//同样的加入一个写的SQL
 
mt.run() ``//开始执行
</div>
本文来源于"阿里中间件团队播客",原文发表时间"   2011-09-10"
相关文章
|
8天前
|
SQL Java 关系型数据库
MySQL原理简介—3.生产环境的部署压测
本文介绍了Java系统和数据库在高并发场景下的压测要点: 1. 普通系统在4核8G机器上每秒能处理几百个请求 2. 高并发下数据库建议使用8核16G或更高配置的机器 3. 数据库部署后需进行基准压测,以评估其最大承载能力 4. QPS和TPS的区别及重要性 5. 压测时需关注IOPS、吞吐量、延迟 6. 除了QPS和TPS,还需监控CPU、内存、磁盘IO、网络带宽 7. 影响每秒可处理并发请求数的因素包括线程数、CPU、内存、磁盘IO和网络带宽 8. Sysbench是数据库压测工具,可构造测试数据并模拟高并发场景 9. 在增加线程数量的同时,必须观察机器的性能,确保各硬件负载在合理范围
112 72
|
23天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
5月前
|
canal 消息中间件 关系型数据库
Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
【9月更文挑战第1天】Canal作为一款高效、可靠的数据同步工具,凭借其基于MySQL binlog的增量同步机制,在数据同步领域展现了强大的应用价值
996 4
|
2月前
|
SQL 关系型数据库 MySQL
MySQL 窗口函数详解:分析性查询的强大工具
MySQL 窗口函数从 8.0 版本开始支持,提供了一种灵活的方式处理 SQL 查询中的数据。无需分组即可对行集进行分析,常用于计算排名、累计和、移动平均值等。基本语法包括 `function_name([arguments]) OVER ([PARTITION BY columns] [ORDER BY columns] [frame_clause])`,常见函数有 `ROW_NUMBER()`, `RANK()`, `DENSE_RANK()`, `SUM()`, `AVG()` 等。窗口框架定义了计算聚合值时应包含的行。适用于复杂数据操作和分析报告。
115 11
|
3月前
|
监控 测试技术 开发工具
移动端性能测试工具
移动端性能测试工具
123 2
|
3月前
|
监控 网络协议 Java
一些适合性能测试脚本编写和维护的工具
一些适合性能测试脚本编写和维护的工具
|
4月前
|
SQL 分布式计算 关系型数据库
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
Hadoop-21 Sqoop 数据迁移工具 简介与环境配置 云服务器 ETL工具 MySQL与Hive数据互相迁移 导入导出
140 3
|
5月前
|
SQL 缓存 关系型数据库
MySQL高级篇——性能分析工具
MySQL的慢查询日志,用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long-query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为 10,意思是运行10秒以上(不含10秒)的语句,认为是超出了我们的最大忍耐时间值。它的主要作用是,帮助我们发现那些执行时间特别长的 SOL 查询,并且有针对性地进行优化,从而提高系统的整体效率。当我们的数据库服务器发生阻塞、运行变慢的时候,检查一下慢查询日志,找到那些慢查询,对解决问题很有帮助。
MySQL高级篇——性能分析工具
|
5月前
|
安全 关系型数据库 MySQL
Navicat工具设置MySQL权限的操作指南
通过上述步骤,您可以使用Navicat有效地为MySQL数据库设置和管理用户权限,确保数据库的安全性和高效管理。这个过程简化了数据库权限管理,使其既直观又易于操作。
609 4
|
6月前
|
SQL 监控 关系型数据库
使用 pt-query-digest 工具分析 MySQL 慢日志
【8月更文挑战第5天】使用 pt-query-digest 工具分析 MySQL 慢日志
154 3
使用 pt-query-digest 工具分析 MySQL 慢日志

热门文章

最新文章