我正在使用 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 文档在这个主题上是沉默的,那么“准备好的 SELECT 语句”的 JDBC 查询类型是否会用文字代替绑定变量?