jMeter"准备SELECT语句" - 它是否替代绑定变量?

时间:2014-11-04 02:36:55

标签: sql jdbc jmeter hana

我正在使用jMeter使用JDBC请求加载测试SAP HANA数据库,该请求使用“Prepared SELECT Statement”查询类型发出SELECT语句。

select * from accounts where acc = '${__P(acct),)} order by ts LIMIT 10

它正在从一张包含数百亿条记录的表中读取,我预计每秒的吞吐量会达到数千笔。 “acct”是使用CSV数据集配置从CSV读入的唯一PK,使用BeanShell侦听器替换。

数据库缓存中的SQL语句包含诸如

之类的语句
select * from accounts where acc = 110982 order by ts LIMIT 10

这是一个问题,因为数据库必须解析每个语句,并且CPU开销很高。使用“准备好的SELECT语句”我希望看到类似的东西:

select * from accounts where acc = :acc order by ts LIMIT 10

准备语句并在运行时替换值,避免重新解析。

jMeter文档对主题是静音的,因此JDBC查询类型的“Prepared SELECT Statement”替换了绑定变量的文字吗?

1 个答案:

答案 0 :(得分:1)

Prepared Select Statement应该与apache Jmeter Documentation站点附带的屏幕截图中提到的一样:

http://jmeter.apache.org/images/screenshots/jdbctest/jdbc-request.png

编写准备好的select语句的方式不正确。

您也可以直接从CSV数据集配置中传递变量" $ {acct}",无需将它们作为属性传递#34; __ P(acct)"

使用以下详细信息作为您准备的选择声明的参考:

select * from accounts where acc = ?  order by ts LIMIT 10

参数值: $ {acct}
参数类型: 根据您的数据库架构

希望这会有帮助。