惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Jina AI
Jina AI
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
雷峰网
雷峰网
T
Tailwind CSS Blog
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
博客园 - 聂微东
V
Visual Studio Blog
博客园_首页
Engineering at Meta
Engineering at Meta
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
The Cloudflare Blog
人人都是产品经理
人人都是产品经理
Apple Machine Learning Research
Apple Machine Learning Research
阮一峰的网络日志
阮一峰的网络日志
Microsoft Security Blog
Microsoft Security Blog
GbyAI
GbyAI
F
Fortinet All Blogs
C
Check Point Blog
罗磊的独立博客
H
Hackread – Cybersecurity News, Data Breaches, AI and More

博客园 - jadesun

【转载】Zachman框架 参加了IBM的架构师培训,总结了一些内容 数据仓库 - 事实表和维度表建立的方法论 Hadoop的学习历程 Hadoop手册_v0.3 MySQL_Cluster 的尝试及各种测试 Hadoop的学习历程 Hadoop手册_v0.2 尝试数据分片处理 和同事扯了一个理论模型出来,后面再验证是否合理。 依赖倒置原则 迪米特法则 中国航油项目的一次数据库优化,关于Audit Logout的问题。 公文流转SQL优化日志七 公文流转SQL优化日志六 继续上篇实现的架构,有了新的进展。介绍一下格瑞趋势的产品 公文流转SQL优化日志五 工作日志,正在实现中的架构,针对SQL SERVER。参考了DZ的设计 公文流转SQL优化日志四 公文流转SQL优化日志三 公文流转SQL优化日志二
和同事们终于将Entity FrameWork整合进新的框架中了,发布第...
jadesun · 2011-07-26 · via 博客园 - jadesun

有一个项目的选型,采用了微软提供的ORM框架Entity FrameWork 4.1。经过这些天和同事们的验证和搭建,昨天出来了一个初步的版本。针对该版本我们做了一次并发测试,测试的策略是这样的:

1LoadRunner模拟一个用户打开页面,该页面中执行一个联表查询,由Entity FrameWork提供出来的数据库操作方法来执行,该方法查询出对象集后,Entity FrameWork将对该对象集跟踪,可以做延迟加载的操作。查询的SQL语句如下:

public List<DemoUserBM> GetUserList()

{

string strSql = "SELECT TOP 100 u.cniId as Id,u.cnvcUserName as UserName,u.cnvcPassWork as PassWork,getDate() as CreateTime,0 as Version FROM tbDemo_User u JOIN tbDemo_Address a ON u.cniID = a.tbDemo_UserId  ORDER BY u.cniID DESC";

return this.SqlQuery(strSql);

}

该查询中采用了ORDER BY u.cniID DESC语句,尽量减少SQL SERVER查询的缓存命中率,提高并发测试的准确率。

2LoadRunner接着做一个Insert操作,该操作是一个联表的插入,同时将userAddress的数据插入表中。由Entity FrameWork维护事务。

Random ro = new Random(99999999);

DemoUserBLL bll = DemoUserBLL.Instance;

//测试保存数据

DemoUserBM user = new DemoUserBM();

user.UserName = "jadesun";

user.PassWork = "123456";

user.CreateTime = DateTime.Now;

user.AddressList.Add(new DemoAddressBM() { Phone = ro.Next().ToString(), Address = "测试地址" });

bll.Save(user);

3LoadRunner 继续做一个 Update 操作,该操作也是一个联表的更新。更新了User表,并再新增 Address 的一条记录。同样由 Entity FrameWork维护事务。

//测试更新事务数据

user.UserName = Guid.NewGuid().ToString();

user.AddressList.Add(new DemoAddressBM() { ColumnUser_Id = user.Id, Phone = ro.Next().ToString(), Address = "测试地址2" });

bll.Update(user);

bll.Dispose();

并发测试的策略就是一个用户做了查询、新增、更改的操作,由200个用户并发交替的执行。和陟昕讨论了一下,这样的测试对框架的验证可以提供参考性。

LoadRunner使用200个并发进行压力测试一个半小时的截图。

 

测试的数据量

 

LoadRunner15分钟前,反映了平均响应时间有6秒左右,每秒执行的事务只有50多个。我检查了数据库,原来没有给tbDemo_Address表的tbDemo_UserId字段加入索引。添加索引之后,Loadrunner的平均响应大幅度下降(在一秒左右),执行事务的个数增加(300个左右)。

在并发测试至一个小时以后,数据的量达到百万级,tbDemo_User表有100多万,tbDemo_Address200多万。这时侯的平均的响应时间增加(2秒左右),执行的事务个数下降(120个左右)。