JMeter Groovy SQL 批量更新很慢

JMeter Groovy SQL Batch Update very slow

您好,我正在尝试从数据库中的数据集中更新多个 MYSQL 表。我正在使用批处理更新 3 个表,如果我更新一行它工作正常并在 1-2 秒内更新所有 3 个表中的记录但是如果我获取 3 个记录并更新然后突然它可能需要 13-25 秒。我已经尝试了很多方法,只是没能让它运行得更快

这是我在 JSR223 后处理器中的代码

import groovy.sql.Sql;
import groovy.sql.*
import java.sql.ResultSet;
def dburl = 'jdbc:mysql://${__P(${env}_host)}:${__P(${env}_port)}/${__P(${env}_db)}?verifyServerCertificate=false&requireSSL=false&useSSL=false&useServerPrepStmts=false&rewriteBatchedStatements=true'
def user = '${__P(${env}_username)}'
def password = '${__P(${env}_password)}'
def driver = '${__P(${env}_driver)}'

def sql = Sql.newInstance(dburl, user, password, driver)
sql.connection.autoCommit = false
if(vars.getObject("resultSet").size() != 0) {
    
ArrayList results = vars.getObject("resultSet");
sql.withBatch 
      { stmt ->
          results.each 
      { 
      rs ->
             stmt.addBatch("""UPDATE Table1 SET column1 = '${rs.column1}' 
             WHERE column2 = ${rs.column2}""")
             stmt.addBatch("""UPDATE Table2 SET column1 = '${rs.column1}' 
             WHERE column2 = ${rs.column2}""")
             stmt.addBatch("""UPDATE Table3 SET column1 = '${rs.column1}' 
             WHERE column2 = ${rs.column2}""")

          }
          stmt.executeBatch();        
}
log.info("End")
}
sql.commit()

谢谢

谢谢大家。我知道 DB Table 结构不是最好的,但这是我的内部要求。

我设法通过调整几个 my.ini 设置来提高性能

主要是innodb_buffer_pool_size=2G以前是什么记不得了,改成2G后性能提升很大

谢谢