性能测试工具操作数据库(七)-Loadrunner与SQL Server

本文涉及的产品
云数据库 RDS SQL Server,基础系列 2核4GB
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
性能测试 PTS,5000VUM额度
简介: Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作,主要用到的是lr_db_connect和lr_db_executeSQLStatement两个函数,具体的用法这里不做解释,请自行查看loadrunner的帮助说明。
版权声明:本文为博主原创文章,未经博主允许不得转载。欢迎访问我的博客 https://blog.csdn.net/smooth00/article/details/68486247

Loadrunner与SQL Server的操作可以通过录制的方式来实现,但本文还是通过直接调用loadrunner本身的function来实现sql语句的操作,主要用到的是lr_db_connect和lr_db_executeSQLStatement两个函数,具体的用法这里不做解释,请自行查看loadrunner的帮助说明。

1、脚本协议:选择web service

在函数lr_db_connect的帮助说明中有句“Important: This function is available only from within Web Services scripts.”。这句话决定了,我们在协议选择的时候只能选择Web Services协议。

2、脚本

Action()
{
	int NumRows=0; 
	double times=0;
	int i=1;
	//建立连接,ConnectionType=SQL
	lr_db_connect("StepName=DatabaseConnection",
		"ConnectionString=Data Source=172.16.1.215;Initial Catalog=LayIM;Persist Security Info=True;User ID=sa;Password=sa",
		"ConnectionName=MyCon",
		"ConnectionType=SQL",
		LAST );
	/*建立连接,ConnectionType=OLEDB
    lr_db_connect("StepName=Connect", 
		"ConnectionString=Provider=SQLOLEDB;Data Source=.;Initial Catalog=my_test;User Id=sa;Password=123456",
		"ConnectionName=MyCon",
		"ConnectionType=OLEDB", //ConnectionType=SQL时,ConnectionString不可以带有Provider;ConnectionType=OLEDB时,必须带Provider
		LAST);
    */
	//执行SQL
	lr_start_transaction("SQL查询");
	NumRows = lr_db_executeSQLStatement("StepName=PerformQuery",
		"ConnectionName=MyCon",
		// 数据库语句
		"SQLStatement=SELECT * FROM layim_user ORDER BY id DESC ",
		"DatasetName=MyDataSet",
		LAST );
	times=lr_get_transaction_duration("SQL查询");
	lr_end_transaction("SQL查询", LR_AUTO);

	lr_output_message("The query returned %d rows.", NumRows);
	lr_output_message("SQL查询语句执行时间 %f ", times);
 
	//打印查询结果
	
	/*lr_db_dataset_action("StepName=PrintDataset",
	    "DatasetName=MyDataSet",
	    "Action=PRINT",
	    LAST );*/
 
	//获取当前第一条记录
	lr_db_getvalue("StepName=GetValue",
		"DatasetName=MyDataSet",
		"Column=nickname",
		"Row=current",
		"OutParam=MyOutputParam",
		LAST );
 
	// 输出当前查询记录
	lr_output_message("The value is: %s", lr_eval_string("{MyOutputParam}") );

	while (i<=10) {//输出10条记录
		lr_db_getvalue("StepName=GetValue",
					   "DatasetName=MyDataSet", 
					   "Column=nickname",
					   "Row=next", 
					   "OutParam=MyOutputParam",
					   LAST);
		lr_output_message("The value %d is: %s", i, lr_eval_string("{MyOutputParam}") ); 
		i=i+1;
	}
	lr_output_message("The query returned %d rows.", NumRows); 
	
	//释放结果
    /*lr_db_dataset_action("StepName=RemoveDataset",
        "DatasetName=MyDataSet",
        "Action=REMOVE",
        LAST);*/

	lr_start_transaction("SQL插入");
	NumRows = lr_db_executeSQLStatement("StepName=Insert",
		"ConnectionName=MyCon",
		// Insert语句,本例中第一列id是自增主键
		"SQLStatement=Insert into layim_user values ('test','123456','test888888','','/test/test',getdate(),'111111',0) ",
		"DatasetName=MyDataSet",
		LAST );
	times=lr_get_transaction_duration("SQL插入");
	lr_end_transaction("SQL插入", LR_AUTO);

    lr_output_message("The insert date %d rows.", NumRows);
	lr_output_message("SQL插入语句执行时间 %f ", times);
 
	//关闭链接
	lr_db_disconnect("stepname=Disconnect","connectionname=MyCon",LAST);
 
	return 0;
}
AI 代码解读

3、补充说明:

(1)ConnectionString:本文给了ConnectionType为sql和OLEDB的例子,具体数据源的连接可参见:https://www.connectionstrings.com/sql-server/

(2)ConnectionType=OLEDB时ConnectionString后面必须指定Provider属性,ConnectionType=SQL又绝对不可以指定Provider属性。不知道为什么这么要求。

(3)lr_db_connect中的ConnectionName可以随意指定,但是lr_db_executeSQLStatement中的ConnectionName必须和其保持一致。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
打赏
0
0
0
0
25
分享
相关文章
数据库编程:在PHP环境下使用SQL Server的方法。
看看你吧,就像一个调皮的小丑鱼在一片广阔的数据库海洋中游弋,一路上吞下大小数据如同海中的珍珠。不管有多少难关,只要记住这个流程,剩下的就只是探索未知的乐趣,沉浸在这个充满挑战的数据库海洋中。
31 16
如何优化SQL查询以提高数据库性能?
这篇文章以生动的比喻介绍了优化SQL查询的重要性及方法。它首先将未优化的SQL查询比作在自助餐厅贪多嚼不烂的行为,强调了只获取必要数据的必要性。接着,文章详细讲解了四种优化策略:**精简选择**(避免使用`SELECT *`)、**专业筛选**(利用`WHERE`缩小范围)、**高效联接**(索引和限制数据量)以及**使用索引**(加速搜索)。此外,还探讨了如何避免N+1查询问题、使用分页限制结果、理解执行计划以及定期维护数据库健康。通过这些技巧,可以显著提升数据库性能,让查询更高效流畅。
数据库数据恢复—SQL Server报错“错误 823”的数据恢复案例
SQL Server数据库附加数据库过程中比较常见的报错是“错误 823”,附加数据库失败。 如果数据库有备份则只需还原备份即可。但是如果没有备份,备份时间太久,或者其他原因导致备份不可用,那么就需要通过专业手段对数据库进行数据恢复。
Flink SQL 详解:流批一体处理的强大工具
Flink SQL 是为应对传统数据处理框架中流批分离的问题而诞生的,它融合了SQL的简洁性和Flink的强大流批处理能力,降低了大数据处理门槛。其核心工作原理包括生成逻辑执行计划、查询优化和构建算子树,确保高效执行。Flink SQL 支持过滤、投影、聚合、连接和窗口等常用算子,实现了流批一体处理,极大提高了开发效率和代码复用性。通过统一的API和语法,Flink SQL 能够灵活应对实时和离线数据分析场景,为企业提供强大的数据处理能力。
318 26
【SQL技术】不同数据库引擎 SQL 优化方案剖析
不同数据库系统(MySQL、PostgreSQL、Doris、Hive)的SQL优化策略。存储引擎特点、SQL执行流程及常见操作(如条件查询、排序、聚合函数)的优化方法。针对各数据库,索引使用、分区裁剪、谓词下推等技术,并提供了具体的SQL示例。通用的SQL调优技巧,如避免使用`COUNT(DISTINCT)`、减少小文件问题、慎重使用`SELECT *`等。通过合理选择和应用这些优化策略,可以显著提升数据库查询性能和系统稳定性。
96 9
【潜意识Java】MyBatis中的动态SQL灵活、高效的数据库查询以及深度总结
本文详细介绍了MyBatis中的动态SQL功能,涵盖其背景、应用场景及实现方式。
214 6
【Sql Server】存储过程通过作业定时执行按天统计记录
通过前两篇文章的学习,我们已经对创建表、存储过程、作业等功能点有所了解 本次将结合前面所学习的知识点,创建统计表以及结合作业定时按天以及实时统计域名各个长度的记录值
458 0
【Sql Server】存储过程通过作业定时执行按天统计记录
SQL Server——为什么要使用存储过程?不使用是什么样的?
提高数据库执行速度,可能第一次见到这句话的小伙伴们感觉到非常的匪夷所思叭!怎么就提高了它的执行速度捏,从哪方面可以表现出来呢?既然这里要说到的是为什么要使用存储过程,也就是说它的优点是什么。那我们肯定就要对使用和不使用存储过程两方面来进行对比才能看出它的优点对吧。
SQL Server 存储过程
SQL Server 存储过程
215 0

热门文章

最新文章