最近使用MSMQ进行并发控制测试,公布一些数据,供大家看一下,一起讨论一下,初始使用MSMQ,欢迎指指点点。。

CSMSDN 2014-10-17 05:38:54

如题,首先把基本的说一下

操作系统:window server 2008
数据库:MSSQL2008 R2

接受MQ的服务器配置如下(2300块的惠普塔式服务器,喷吧。。经费不容易申请啊)



数据库地址:192.168.0.3(同样的配置,同样的操作系统)
接受MQ服务器地址:192.168.0.6(同样的配置,同样的操作系统)

数据库表设计
UserRecharge 用户充值记录
UserAmount 用户金额
UserBuy 用户购买记录
ConsumerLog 消费日志

曝光部分属性


public class ConsumerLog
{
public int Pkid { set; get; }
public int UserPkid { set; get; }
public string UserAccount { set; get; }
public int Classification { set; get; }//分类(1增加2减少)
public decimal Amount { set; get; }//操作金额
public decimal SurplusAmount { set; get; }//剩余金额
public string Description { set; get; }
public DateTime Time { set; get; }
}
public class UserBuy
{
public int Pkid { set; get; }
public int UserPkid { set; get; }
public string UserAccount { set; get; }
public string ProductName { set; get; }//产品名称
public int Quantity { set; get; }//数量
public decimal UnitPrice { set; get; }//单位
public DateTime Time { set; get; }
public string Description { set; get; }
}
public class UserAmount
{
public int Pkid { set; get; }
public string UserAccount { set; get; }
public decimal Amount { set; get; }//充值金额

}

public class UserAmount
{
public int Pkid { set; get; }
public string UserAccount { set; get; }
public decimal Amount { set; get; }//用户金额
}


部分代码


using (MessageQueueTransaction myTransaction = new MessageQueueTransaction())
{
try
{
myTransaction.Begin();
Message myMessage = myQueue.Receive(myTransaction);
MQModel.List list = (MQModel.List)myMessage.Body;

if (list.Classification == 1)
{
//充值
bool isSuccess = Recharge(list.RechargeModel);
if (isSuccess)
{
myTransaction.Commit();
Console.WriteLine("充值成功!金额:{0}", list.RechargeModel.Amount);
}
else
{
myTransaction.Abort();
}
}
else
{
//购买
bool isSuccess = Buy(list.BuyModel);
if (isSuccess)
{
myTransaction.Commit();
Console.WriteLine("购买成功:产品{0},单价{1},数量{2}", list.BuyModel.ProductName, list.BuyModel.UnitPrice, list.BuyModel.Quantity);
}
else
{
myTransaction.Abort();
}
}
}
catch (Exception ex)
{
myTransaction.Abort();
Console.WriteLine("发送失败,己取消事务,原因:{0}", ex.Message);
}
}



测试结果公布(处理条数/分钟):

(A)EF+事务
3315 3346 3350 3344 3353
(B)EF 没有 事务
3386 3539 3538 3479 3509
(C)ADO.NET+事务
5246 5309 5243 5273 5286
(D)ADO.NET 没 事务
5709 5722 5780 5764 5704

B比A提升约4%
D比C提升约:8%

C和D比A和B,提升约67%


纯写入ADO.NET与EF的效率,很久的一个测试,找不到电脑配置,数据库在本地。



NET技术交流群哈 160046333 小广告,常来讨论哦。。
...全文
195 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
CSMSDN 2014-10-20
  • 打赏
  • 举报
回复
没有人吗。。
CSMSDN 2014-10-17
  • 打赏
  • 举报
回复
沙发自己坐哈。。讨论内容精采的给分哦。。

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧