Jackei - 带着梦想和激情在现实中旅行

只是一个经历曲折的普通 ITer
posts - 821, comments - 4000, trackbacks - 26, articles - 3
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
关键字:开源性能测试工具  JMeter  参数化

当使用
JMeter JDBC 脚本对数据库进行测试时,JMeterJDBC Request中包含的SQL语句时无法使用参数的。例如 SELECT * FROM ${table_name} 是无效的。

如果需要实现同时多个不同的用户使用不同的SQL,可以通过把整条SQL语句参数化来实现。例如把SQL语句放在 csv 文件中,然后在JDBC Request Query 中使用参数代替 ${SQL_Statement}

Feedback

#1楼  回复 引用   

2006-09-22 09:21 by ppiao[未注册用户]
能否举个例子说明一下?包括csv、jdbc request的做法

#2楼[楼主]  回复 引用 查看   

2006-09-22 10:57 by jackei      
@ppiao

看下面的链接吧。
http://www.cnblogs.com/jackei/archive/2006/07/31/464001.html

有说明和示例的下载。

#3楼  回复 引用   

2006-11-23 10:26 by sally[匿名][未注册用户]
我知道jmeter测数据库了,"把SQL语句放在 csv 文件中"是怎么回事?不明白对csv文件怎么做.jdbc请求的Query用${SQL_Statement}能设置.

#4楼[楼主]  回复 引用 查看   

2006-11-23 13:01 by Jackei      
@sally[匿名]
CSV 文件只是用来保存 SQL 。

#5楼  回复 引用   

2009-03-23 14:50 by maggiee_yu[未注册用户]
我也是不明白对csv文件怎么做.jdbc请求的Query用${SQL_Statement}能设置.能不能详细点,举个例子

#6楼  回复 引用   

2009-03-23 14:51 by maggiee_yu[未注册用户]
谢谢楼主,^_^

#7楼  回复 引用 查看   

2010-05-14 16:58 by Carrie      
刚试了一下,发现不需要把整一句SQL参数化。
只需要讲对应的地方设置为${test}
然后加入csv data set config并加上相关的设置就可以用了。

#8楼  回复 引用 查看   

2010-05-14 17:03 by Carrie      
但是我有另外一个问题,我现在用的是SQL Server 2005.
数据库本身有一个Performance Profiler的工具,也是可以检测sql的时间的;
我对比了一下,数据库本身工具和Jmeter收集的数据。
发现数据相差挺远的;
数据库本身显示的是0或者1ms,而Jmeter则收集最小3ms最大6ms。

请问一下,时间都浪费在哪里呢?

#9楼[楼主]  回复 引用 查看   

2010-05-15 14:45 by Jackei      
引用Carrie:
刚试了一下,发现不需要把整一句SQL参数化。
只需要讲对应的地方设置为${test}
然后加入csv data set config并加上相关的设置就可以用了。


呵呵,难道我原文不是那么写的吗? :)

#10楼[楼主]  回复 引用 查看   

2010-05-15 14:50 by Jackei      
引用Carrie:
但是我有另外一个问题,我现在用的是SQL Server 2005.
数据库本身有一个Performance Profiler的工具,也是可以检测sql的时间的;
我对比了一下,数据库本身工具和Jmeter收集的数据。
发现数据相差挺远的;
数据库本身显示的是0或者1ms,而Jmeter则收集最小3ms最大6ms。

请问一下,时间都浪费在哪里呢?


这个就要具体了解了 JMeter 实现的逻辑才能弄清楚了,有可能是 SQL Server 的 Prifiler 工具是按照 SQL 执行启动和结束的时间来计算的,而JMeter 是按照请求提交和响应收到的时间来结算的。

在ms 这个level,的确有可能存在这种差异。所以如果能用SQL Server的 profiler工具监控,就直接用吧,本身这个易用性也更好,里面有系统内置的成套的counter,监控和分析都方便很多,也方便直接对照MS的手册来分析。

BTW, http://www.codeplex.com/ 是一个很不错的站点,我之前在MS的时候经常沉浸在上面,有很多小工具,对于性能测试、bottleneck的identify、report generation、data generating 都有很多帮助。

#11楼  回复 引用 查看   

2010-05-15 16:26 by Carrie      
@Jackei

难道我理解错了。
你的意思应该是,需要把剩个语句参数化。
如果需要执行的sql是,select * from table_name where A='a'
那么按照你的方法是把整一句sql作为参数
而我的意思是,可以直接select * from table_name where A='${a}'
只是a为参数

#12楼[楼主]  回复 引用 查看   

2010-05-16 15:40 by Jackei      
引用Carrie:
@Jackei

难道我理解错了。
你的意思应该是,需要把剩个语句参数化。
如果需要执行的sql是,select * from table_name where A='a'
那么按照你的方法是把整一句sql作为参数
而我的意思是,可以直接select * from table_name where A='${a}'
只是a为参数


呵呵,不好意思,的确是我搞错了:)