我有一个通过SP插入数据的系统,称为WCF服务。
在系统中,我们目前有12000+主动登录用户,他们将每30秒调用一次WCF服务(实际上每秒钟至少有200个请求)。
在Server方面,CPU使用率达到100%,当我检查时,超过90%的时间用于DB写操作。这会影响整个服务器性能。
我需要解决这个问题的建议,以便我们有更少的DB写操作和更多的CPU保持自由。
如果需要,可以集成任何其他DB Server、使用实体框架或任何其他ORM组合。我需要有解决办法来处理这个问题。
其他可能有用的信息:表没有定义索引,数据库的增长因子设置为200 to。Server版本为2012年。
发布于 2014-03-07 08:44:02
SImple解决方案:回写。不要为每次插入都调用sql服务器。
创建一个收集它们并更粗地调用它们的服务。主要的问题是,事务处理在成本上有点过高--在这样的情况下,对它们进行批量处理可能是有意义的。
不要为每一行调用SP,将它们加载到临时表中,然后批量处理它们(或者使用表变量一次向sp提供多行信息)。
这消除了许多问题,包括大量提交(您基本上要求200 TPS,这是相当沉重的,这里不需要)。
你该怎么做取决于你自己--但对于如此沉重的事情,我会远离ORM (实体框架(Entity )在不批量处理任何东西时很有趣--这应该是大量sp调用),并且至少在这一部分中使用手工构建的sql。我喜欢ORM,但是在需要的时候有一个高性能手工制作的方法总是很好的。
https://stackoverflow.com/questions/22245223
复制相似问题