我有一个系统,通过SP插入数据,通过WCF服务调用。
在系统中,我们目前有12000多个主动登录用户,每隔30秒就会调用一次WCF服务(实际上每秒最少200个请求)。
在SQL Server端,CPU使用率达到100%,当我检查时,> 90%的时间花在DB Writes上。这会影响整体服务器性能。
我需要建议解决此问题,以便我们减少数据库写操作,并且更多的CPU保持空闲状态。
如果需要,可以集成任何其他数据库服务器,使用实体框架或任何其他ORM组合。我需要有解决方案来处理这个问题。
其他可能有用的信息: 表没有定义索引 数据库的增长因子设置为200MB。 SQL Server版本是2012年。
答案 0 :(得分:0)
简单的解决方案:支持写入。不要为每个插入调用sql server。
制作收集它们的服务并更粗略地调用它们。主要问题是交易处理的成本有点大 - 在这样的情况下批量处理可能是有意义的。
不要为每一行调用SP,将它们加载到临时表中,然后批量处理它们(或使用表变量一次为sp提供多行信息)。
这解决了很多问题,包括大量的提交(你基本上要求200 TPS,这很重,在这里不需要)。
你是如何做到这一点取决于你 - 但是对于那些沉重的东西我会远离ORM(实体框架是非欢乐的,没有批处理任何东西 - 应该是大量的sp调用)并且至少使用手工制作的sql部分。我喜欢ORM,但在需要时采用高性能手工制作方法总是很好。