zoukankan      html  css  js  c++  java
  • jmeter jdbc各字段的含义

    JDBC采样器各选项的含义如下:

    1.Variable Name

    其中的Variable Name和上面JDBC Connection Configuration中的Variable Name相同,这里表示JDBC Connection Configuration 建立一个名为pubpool的连接池,之后其他JDBC Request 都共用这个连接池。

    2.SQL Query

    (1)Query Type

    xxx Statement需要填写的sql是一句完整可执行的sql,而Prepared xxx Statement允许用户在sql中变量,然后再Parameter values和Parameter types中填写参数和类型,最终执行时替代sql中的变量,形成一句完整的sql语句。

    Select statement:

    ##待验证,网上找的例子:

    如果SQL语句中需要使用参数变量,那么Query Type 需要设置为Select Statement ,需要先添加Random Variable,然后在Parameter Values中输入${变量名称},${变量名称};

    在Paramter types中输入变量的数据类型。 如下图示:

    中间用逗号分隔。只能执行第一个SQL语句。

    Update statement: 对于Insert、Update、Delete语句,需要设置Query Type为:Update Statament.数据修改语句中可以使用参数,而且可以顺序执行多个修改语句。

    Egg:

    Callable statement:

    ##待验证:

    多个查询语句(不使用参数的情况下)可以放在一起顺序执行,需要设置Query Type为Callable Statement,然后顺序输入select语句,不用加go或者分号。如果Query Type设置为:Select Statement的话,只执行第一个SQL语句。

    Prepared select statement:

    Prepared update statement:

    Commit:

    把JDBC connection configuration中的自动提交为false,执行更改,增加或删除操作后,查询数据并无更改,再添加一个JDBC Request,设置其Query Type为commit,再次查询,之前的操作生效。

    Rollback:

    把JDBC connection configuration中的自动提交为false,执行更改,增加或删除操作后,查询数据并无更改(相当于编辑没保存), 再添加一个JDBC Request,设置其Query Type为rollback(相当于编辑后撤销),再次查询,仍然没有更改。

    如果把JDBC connection configuration中的自动提交为true,执行更改,增加或删除操作后,查询数据更改,但一旦事物被提交就无法rollback。

    Autocommit(false)和Autocommit(true):

    把JDBC connection configuration中的自动提交为true或false,是设置系统参数的默认值。添加一个JDBC Request,设置其Query Type Autocommit为true或false后(相当于修改系统参数),再进行对数据库的增加、删除、修改操作。

    Edit:必须是对上述之一的结果的引用, 为使用正则表达式的操作。

    (2)Parameter values:表示我们要添加的数据,需要不同数据添加可以使用参数化

    Parameter types为上面需要输入数据的类型,与上面的一一对应

    Parameter values和Parameter types:成对出现,且sql语句中有多少个?,这里就必须有多少对参数键值对,假设sql语句为select * from ZMYW_USER where ID=?,那么可以设置Parameter values为${id},Parameter types为VARCHAR

    (3)Variable names:变量名称,为数据库的字段名称,有多个字段返回时,可以使用逗号隔开,用于存放select操作返回的查询结果

    Result variable name:用于存放select操作返回的查询结果集。

    3.扩展:

    (1) 当选择了"Prepared select statement"、”Prepared update statement "Callable statement"的类型时,每个连接的语句缓存使用 JDBC 请求。在默认情况下将存储每个连接高达 100 Prepared Statements,这可能会影响您的数据库 (打开的游标)。这可以通过定义"jdbc sampler.nullmarker"属性更改。

    (2)在实际的项目中,至少有2种类型的JDBC请求需要关注:select语句和存储过程。前者反应了select语句是否高效,以及表的索引等是否需要优化;后者则是反应存储过程的算法是否高效。它们如果效率低下,必然会带来响应上的不尽如人意。对于这两种请求,JDBC请求的配置略有区别。

    (1)Query Type为Select Statement时,对应执行代码为:stmt = conn.createStatement();

    ResultSet rs = null;

    rs = stmt.executeQuery(sql);

    return getStringFromResultSet(rs).getBytes(ENCODING);

    (2)Query Type为Callable Statement时,对应执行代码为:CallableStatement cstmt = getCallableStatement(conn);

    int out[]=setArguments(cstmt);

    boolean hasResultSet = cstmt.execute();

    String sb = resultSetsToString(cstmt,hasResultSet, out);

    return sb.getBytes(ENCODING);

    (3)Query Type为Update Statement时,对应执行代码为:stmt = conn.createStatement();

    stmt.executeUpdate(sql);

    int updateCount = stmt.getUpdateCount();

    String results = updateCount + " updates";

    return results.getBytes(ENCODING);

    (4)Query Type为Prepared Select Statement时,对应执行代码为:PreparedStatement pstmt = getPreparedStatement(conn);

    setArguments(pstmt);

    ResultSet rs = null;

    rs = pstmt.executeQuery();

    return getStringFromResultSet(rs).getBytes(ENCODING);

    (5)Query Type为Prepared Update Statement时,对应执行代码为:

    PreparedStatement pstmt = getPreparedStatement(conn);

    setArguments(pstmt);

    pstmt.executeUpdate();

    String sb = resultSetsToString(pstmt,false,null);

    return sb.getBytes(ENCODING);

    (6)Query Type为Rollback时,对应执行代码为:

    conn.rollback();

    return ROLLBACK.getBytes(ENCODING);

    (7)Query Type为Commit时,对应执行代码为:

    conn.commit();

    return COMMIT.getBytes(ENCODING);

    (8)Query Type为AutoCommit(false)时,对应执行代码为:conn.setAutoCommit(false);

    return AUTOCOMMIT_FALSE.getBytes(ENCODING);

    (9)Query Type为AutoCommit(true)时,对应执行代码为:

    conn.setAutoCommit(true);

    return AUTOCOMMIT_TRUE.getBytes(ENCODING);

    (10)其它情况直接抛异常:throw new UnsupportedOperationException("Unexpected query type: "+_queryType);

    参考自:http://f.dataguru.cn/forum.php?mod=viewthread&tid=555033&highlight=JDBC

  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/yajing-zh/p/5273232.html
Copyright © 2011-2022 走看看