是否有任何工具可以使用 MySQL 通用日志创建的日志文件进行压力测试?在谷歌上大量搜索后,我发现很少有压力测试工具只使用一些基准进行压力测试。一种解决方案是使用 Apache JMeter,但它不会从 MySQL 日志文件创建测试计划,并且为我拥有的所有查询创建自定义测试计划太耗时了。
或者是否有至少可以从 MySQL 日志创建 .sql 文件的工具?
sysbench 0.5: multi-threaded system evaluation benchmark
Running the test with following options:
Number of threads: 8
Random number generator seed is 0 and will be ignored
Threads started!
OLTP test statistics:
queries performed:
read: 32
write: 56
other: 0
total: 88
transactions: 0 (0.00 per sec.)
deadlocks: 0 (0.00 per sec.)
read/write requests: 88 (7728.11 per sec.)
other operations: 0 (0.00 per sec.)
General statistics:
total time: 0.0114s
total number of events: 8
total time taken by event execution: 0.0252s
response time:
min: 2.87ms
avg: 3.15ms
max: 3.65ms
approx. 95 percentile: 3.65ms
Threads fairness:
events (avg/stddev): 1.0000/0.00
execution time (avg/stddev): 0.0032/0.00
这是使用蛮力 mysql 的更直接的方法:将一般设置为 MyISAM 表。安装时,您会发现该表
mysql.general_log
为 CSV 表。与其重新发明轮子并进行大量打字,请阅读我过去的帖子:
Nov 16, 2011
:记录 MySQL DB 更改查询和用户Feb 11, 2012
: MySQL 通用日志Jan 08, 2012
:如何启用 MySQL 通用日志?一旦您
mysql.general_log
转换为 MyISAM 并记录查询,只需像访问任何其他 MyISAM 表一样访问日志。这是MyISAM版本的结构
mysql.general_log
从这里,只需编写以查询开头的所有内容:
你去吧。
试试看 !!!
这只是一个跟踪而不是一个完整的解决方案,“你的”解决方案是基于你的幻想(和一些工作);)
我已经完成了这种由通用查询日志生成的测试捕获和清理查询,并在编写自己的文件后使用sysbench 0.5
lua
,您可以在官方源代码中找到一些示例,在我的数据库(硬件和模式/数据的镜像)上-快照,以便我可以立即恢复数据的原始状态-)。然后你可以运行这样的命令:
./sysbench --mysql-table-engine=myisam --mysql-db=<yourdb> --mysql-user=<user> --mysql-host=<host> --mysql-password=<pass> --test=tests/db/<yourlua>.lua --num-threads=8 --max-requests=8 run
收集并绘制结果、更改并发和请求,并监控您的数据库和硬件状态。
我的
lua
文件包含大约 80.000 个查询,它由插入、更新和删除组成更新#1
您可以尝试的一个很好的起点是开始(简单地)编写您的
lua
文件,如下所示:将您的查询放入
db_query("")
函数中,为此类过程清理您的一般查询日志需要一些工作这里是一个“个人”
lua
文件的简单输出,就像上面一样,有 9 个查询,7 个插入和 2 个选择,+2 BEGIN/COMMIT:希望这可以帮助