MySQL小工具 之 压测Groovy
用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:
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",
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() //开始执行
建议继续学习:
- 给Apache做压力测试时遇到的问题 (阅读:5891)
- Super Smack (阅读:3353)
- 用httpclient做压力测试时Too many open files的解决办法 (阅读:3202)
- [转]VPS服务器性能 压力测试工具 http_load、webbench、ab、Siege使用教程 (阅读:2637)
- tcpcopy,模拟在线压力测试的好帮手 (阅读:2409)
- easy_runner一个简单的压测程序 (阅读:2274)
- 降低应用latency方法谈 (阅读:2117)
- 从Java和JavaScript来学习Haskell和Groovy(引子) (阅读:1751)
- 倡议:MySQL压力测试基准值 (阅读:1539)
- 从Java和JavaScript来学习Haskell和Groovy(元编程) (阅读:1343)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:jm 来源: 淘宝JAVA中间件团队博客
- 标签: Groovy 压力测试
- 发布时间:2011-09-14 13:38:53
- [66] Go Reflect 性能
- [65] Oracle MTS模式下 进程地址与会话信
- [64] 如何拿下简短的域名
- [59] android 开发入门
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 图书馆的世界纪录
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则