tencent cloud

腾讯云可观测平台

动态与公告
产品动态
产品简介
产品概述
产品优势
基本功能
基本概念
应用场景
使用限制
购买指南
云产品监控
应用性能监控
终端性能监控
前端性能监控
云拨测
Prometheus 监控服务
Grafana 服务
事件总线
云压测
快速入门
监控概览
实例分组
云产品监控
应用性能监控
云拨测
云压测
Prometheus 监控服务
Grafana 服务
创建 Dashboard
事件总线
告警服务
云产品监控
云产品监控指标
控制台操作指南
云服务器监控组件
云产品监控对接 Grafana
故障处理
实践教程
应用性能监控
应用性能监控简介
接入指南
控制台操作指南
实践教程
参考信息
常见问题
终端性能监控
终端性能监控概述
控制台操作指南
接入指南
实践教程
前端性能监控
前端性能监控简介
控制台操作指南
接入指南
常见问题
云拨测
产品简介
控制台操作指南
常见问题
云压测
云压测概述
控制台操作指南
实践教程
JavaScript API 列表
常见问题
Prometheus 监控
Prometheus 监控简介
接入指南
控制台操作指南
实践教程
Terraform
常见问题
Grafana 服务
产品简介
控制台操作指南
Grafana 平台常用功能指引
常见问题
Dashboard
什么是 Dashboard
控制台操作指南
告警管理
控制台操作指南
故障处理
常见问题
事件总线
事件总线简介
控制台操作指南
实践教程
常见问题
报表管理
常见问题
腾讯云可观测平台常见问题
告警服务相关
一般性问题
监控图表相关
云服务器监控组件相关
动态阈值告警相关
云监控对接 Grafana 相关
文档阅读指南
相关协议
应用性能监控服务等级协议
APM 隐私协议
APM 数据处理和安全协议
前端性能监控服务等级协议
终端性能监控服务等级协议
云拨测服务等级协议
Prometheus 监控服务服务等级协议
Grafana 服务服务等级协议
云压测服务等级协议
云压测使用限制
Cloud Monitor Service Level Agreement
词汇表

SQL 数据库压测

PDF
聚焦模式
字号
最后更新时间: 2025-03-10 22:14:19
本文介绍云压测 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 () {
// 向数据库发送请求
}
说明:
若数据库表中带有日期或时间字段,建立数据库连接时,建议在连接串中加入 parserTime 参数(例如:user:passwd@tcp(ip:port)/database?parseTime=true),避免时间解析出错。
建议将上述建立数据库连接的语句,作为全局变量放在主函数外部(如上述示例),以供同一个 VU 在迭代执行主函数时能够复用连接,避免多次重复创建数据库连接,带来不必要的资源消耗。

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 调试功能,快速验证结果是否符合预期。
更多详情,可参见 调试场景

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈