zhuxiaoyan003 发表于 2009-12-25 09:04:59

lr如何测试cs中的sqlserver数据库性能??

要测试一个系统的sql server 2000数据库性能
语言:c#
数据库:sql server 2000,文件服务器与数据库服务器在两台计算机上
在由一个有效用户登录后,有大批量数据要上传到文件服务器上,同时要在sqlserver 2000数据库中修改这些数据的状态,在此时测试数据库服务器的性能
该怎样做这个数据库的性能测试?
我的想法:可以由开发人员给出用户登录及上传服务器和修改数据库的代码,但是该怎样参数化,才能达到模拟大批量数据写入文件服务器,同时修改数据库中相关各表的状态呢?

我也用lr录制脚本了,录制的都是一些sql语句,起初认为可以在这上面参数化,可是却觉得无从下手,不知从哪参数化
录制的脚本大家看看
        lr.log("Event 14180: new SqlCommand();");
                        SqlCommand_123 = new SqlCommand();

                        lr.log("Event 14181: SqlCommand_123.Connection = SqlConnection_26;");
                        SqlCommand_123.Connection = SqlConnection_26;

                        String value_145;
                        value_145 = "SELECT LayerID, MapID, StepID FROM DataState WHERE (MapID = @Map)";
                        lr.log("Event 14182: SqlCommand_123.CommandText = value_145;");
                        SqlCommand_123.CommandText = value_145;

                        lr.log("Event 14183: SqlCommand_123.CommandType = CommandType.Text;");
                        SqlCommand_123.CommandType = CommandType.Text;

                        lr.log("Event 14184: SqlCommand_123.Parameters;");
                        SqlParameterCollection_96 = SqlCommand_123.Parameters;

                        lr.log("Event 14185: new SqlParameter(\"@Map\", SqlDbType.Int, 4, ParameterDirection.Input," +
                          " byte.MinValue, byte.MinValue, \"MapID\", DataRowVersion.Current, false, null, str" +
                          "ing.Empty, string.Empty, string.Empty);");
                        SqlParameter_348 = new SqlParameter("@Map", SqlDbType.Int, 4, ParameterDirection.Input, byte.MinValue, byte.MinValue, "MapID", DataRowVersion.Current, false, null, string.Empty, string.Empty, string.Empty);

                        lr.log("Event 14186: SqlParameterCollection_96.Add(SqlParameter_348);");
                        SqlParameter_348 = SqlParameterCollection_96.Add(SqlParameter_348);

[ 本帖最后由 zhuxiaoyan003 于 2009-12-25 09:16 编辑 ]

zhuxiaoyan003 发表于 2009-12-25 09:19:15

昨晚做梦都满脑子该怎样参数化这些东西,才能测试数据库的性能……
梦中都解决了,看着脚本哗啦哗啦的跑着,甭提多美了,可醒了才知道原来是做梦呢……

zhuxiaoyan003 发表于 2009-12-25 09:23:34

起初我想:为了避免插入相同数据违反primary key约束,在插入之前,我把数据库中已有的记录删掉,然后再插记录。然后我在controller中模拟n个人操作上传数据,修改数据库记录的工作,可是,最终觉得这不是我想要测试的。我要测试的是模拟一个人在操作大量数据上传,修改数据库记录的工作,可我不知道该通过什么来实现这种模拟

qiguojie 发表于 2009-12-25 09:37:13

1、你录制的这个脚本偶没看明白,是C#的LR脚本么??我没见过呢。研发给出用户登录及上传服务器和修改数据库的代码的话,你干脆做个web应用,这样使用web协议录制比较轻松。
2、一个人操作大量数据插入数据库,和多人操作一个数据插入数据库,差距只在参数化多人登录而已,我觉得你这个场景中可以考虑忽略这个差异。

泊涯 发表于 2009-12-25 12:27:56

可以试试上传的数据量很大 然后在针对你上传的数据进行修改

泊涯 发表于 2009-12-25 12:28:33

还有你LR录制看的是应用的协议吧 你是模拟客户端操作的不是直接测试数据库的

zhuxiaoyan003 发表于 2009-12-26 09:01:30

我用的是Microsoft.net协议,因为用odbc协议根本录制不上脚本!
可以试试上传的数据量很大 然后在针对你上传的数据进行修改   不明白泊崖说的这句话是什么意思?是说我用lr录制大批量数据上传,然后再对上传数据修改?还是什么???

zhuxiaoyan003 发表于 2009-12-26 09:06:15

我用的是Microsoft.net协议,因为用odbc协议根本录制不上脚本!
可以试试上传的数据量很大 然后在针对你上传的数据进行修改   不明白泊崖说的这句话是什么意思?是说我用lr录制大批量数据上传,然后再对上传数据修改?还是什么???

mei_02lei 发表于 2009-12-26 14:06:28

你可以自己录制你的写的SQL语句,模拟上传数据,3atesting中有关于SQL的讲座,可以去看哈

小不点蜗牛 发表于 2009-12-26 23:49:44

有点懂了

zhuxiaoyan003 发表于 2009-12-28 16:27:30

谢谢9楼

云层 发表于 2009-12-28 23:18:39

别拿这种东西测数据库,这个没啥意义的,数据库有专门的压力和负载工具

zhuxiaoyan003 发表于 2009-12-29 15:07:35

我这么参数化不对吗???

参数化出的问题,我参数的不对吗?

zhuxiaoyan003 发表于 2009-12-29 17:41:17

为什么这么参数化不对呢?

yzylion 发表于 2009-12-30 09:33:26

#12

云层老师,你说的专门的工具是哪些啊?
那loadrunner就你个人来说,是适合测试哪些应用呢?
难道只是web?
页: [1]
查看完整版本: lr如何测试cs中的sqlserver数据库性能??