是否有可用的工具可以使用MySQL通用日志创建的日志文件进行压力测试?在google上进行了大量搜索之后,我发现很少有压力测试工具,它们只使用一些压力测试基准。一个解决方案是使用Apache JMeter,但是它不从MySQL日志文件创建测试计划,并且为我的所有查询创建自定义测试计划太费时了。
或者,是否有至少可以从.sql日志创建MySQL文件的工具?
发布于 2013-04-04 11:39:08
我已经完成了由一般查询日志生成的这种测试捕获和清理查询,并使用sysbench 0.5编写了我自己的lua文件,您可以在正式的源代码中找到一些示例,在my数据库的镜像(hw和schema/data -a快照)上,这样我就可以立即恢复数据的原始状态-)。
然后可以运行这样的命令:
./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
收集和图表您的结果,更改并发和请求,并监视您的数据库和HW状态。
我的lua文件包含大约80.000个查询,由插入、更新和删除组成。
您可以尝试的一个很好的起点是开始(简单)编写lua文件,如下所示:
pathtest = string.match(test, "(.*/)") or ""
dofile(pathtest .. "common.lua")
function thread_init(thread_id)
set_vars()
if (db_driver == "mysql" and mysql_table_engine == "myisam") then
-- begin_query = "LOCK TABLES ".. table_name .." WRITE"
-- commit_query = "UNLOCK TABLES"
begin_query = "SELECT 1>0"
commit_query = "SELECT 1>0"
else
begin_query = "BEGIN"
commit_query = "COMMIT"
end
end
function event(thread_id)
local table_name
db_query(begin_query)
rs = db_query("INSERT INTO .....")
rs = db_query("INSERT INTO .....")
rs = db_query("SELECT ... FROM ...")
rs = db_query("DELETE ...")
db_query(commit_query)
end将查询放入db_query("")函数,清除这类过程的一般查询日志需要做一些工作。
这里有一个"personal“lua文件的简单输出,如上面所示,其中包含9个查询、7个insert和2个select,+2 BEGIN/COMMIT:
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希望这能有所帮助
https://dba.stackexchange.com/questions/39221
复制相似问题