我正在使用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”替换了绑定变量的文字吗?
答案 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}
参数类型: 根据您的数据库架构
希望这会有帮助。