云压测 SQL 数据库压测

云压测 SQL 数据库的脚本编排方法,用于云压测支持 SQL 语言的关系型数据库(如 MySQL 等)。

相关产品
云压测 产品页,含版本规格、价格与购买入口。

一、基本用法

使用 pts/sql API 提供的接口,你可创建连接 SQL 数据库的客户端,发送 DDL 和 DML 请求,对数据库做基本的增删改查等操作。

二、数据库连接

建立数据库连接可调用 new sql.Database(driverName: string, dataSourceName: string) 方法。其中,driverName

参数用于指定数据库驱动程序,dataSourceName 参数用于指定数据源。

脚本示例如下:

import sql from 'pts/sql';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { // 向数据库发送请求}

注意:说明:

三、SQL 查询

SQL 查询可调用 db.query(sql string) 方法,返回符合条件的数据库记录数组。其中,sql 参数代表传入的 SQL 查询语句。

脚本示例如下:

import sql from 'pts/sql';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { let rows = db.query("SELECT * FROM user"); console.log(JSON.stringify(rows)); // [{"id":1,"name":"zhangsan","age":23},{"id":2,"name":"lisi","age":2}]}

四、SQL 执行

SQL 执行可调用 db.exec(sql string) 方法,传入执行语句,返回本次执行对数据库的影响(返回字段包括:最后插入行的 ID、所有受影响的行数)。

其中,sql 参数代表传入的 SQL 执行语句。

脚本示例如下:

import sql from 'pts/sql';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { // 修改数据 let result = db.exec("UPDATE user SET age=? WHERE name='zhangsan'", Math.floor(Math.random() * 100)); console.log(JSON.stringify(result)); // {"lastInsertId":0,"rowsAffected":1} // 插入数据 let result1 = db.exec("insert into user (name, age) values ('wanger', 18)"); console.log(JSON.stringify(result)); // {"lastInsertId":66,"rowsAffected":1}}

注意:说明:

注意:db.exec 方法支持常见的 DDL 命令(如 create、drop、alter)和常见的 DML 命令(如 insert、update、delete)。

五、脚本示例

一个包含数据库基本操作及检查点使用的完整脚本示例如下:

import sql from 'pts/sql';import { sleep, check } from 'pts';const db = new sql.Database(sql.MySQL, "user:passwd@tcp(ip:port)/database")export default function () { // 查询数据 let rows = db.query("SELECT * FROM user"); console.log(JSON.stringify(rows)); // [{"id":1,"name":"zhangsan","age":23},{"id":2,"name":"lisi","age":2}] // 新增数据 let result = db.exec("insert into user (name, age) values ('wanger', 18)"); console.log(JSON.stringify(result)); // {"lastInsertId":66,"rowsAffected":1} // 删除数据 let result1 = db.exec("delete from user where id > 8"); console.log(JSON.stringify(result)); // {"lastInsertId":0,"rowsAffected":2} // 修改数据 let result2 = db.exec("UPDATE user SET age=? WHERE name='zhangsan'", Math.floor(Math.random() * 100)); console.log(JSON.stringify(result)); // {"lastInsertId":0,"rowsAffected":1} // 设置检查点 check("1 row returned", () => result.rowsAffected === 1); sleep(1)}

六、脚本验证

若要验证脚本执行结果,可在正式压测前,先使用 PTS 调试功能,快速验证结果是否符合预期。

更多详情,可参见 调试场景。

赞 (0)
上一篇 4天前
下一篇 4天前