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

CSMSDN CSMSDN 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

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

操作系统: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 小广告,常来讨论哦。。
...全文

相关推荐

评论 2
收藏 已收藏
分享
返回顶部
CSMSDN
.NET社区 62,272 成员 668,968 内容