我有一个Microsoft Sql服务器,处理一个由java和c#中的多个客户端组成的公司软件套件的stream量适中的stream量。
它正在被“暂停”查询超载。 他们最终通过,但有些是超时(尤其是写)。 查询主要是读取。
有什么办法可以加快速度,还是以其他方式修复?
这里是我的活动监视器的图片 ,以显示我在说什么:

附注:我们已经计划在一段时间内迁移到MySql。 那会有帮助吗? 我知道MS Sql是强大的,但它是默认的Read-Committed,可以伤害任何东西吗?
截图中显示的等待types是:
(这两个都是MSDN的 C&Ped。)
MSDNbuild议调整您的查询和/或上面添加索引。 这可能是一个更好的第一步,而不是只是枯萎的SQL Server和切换到别的东西。 (如果问题在于你的查询,那么在MySql,恕我直言,他们仍然效率低下)。所以,我会build议看看Brent Ozar的等待统计资源 ,寻找前十个昂贵的查询 。 希望这会指出你正确的方向。
好的,找出问题所在。
MS Sql的默认设置使用服务器的所有内核执行大型查询。 我们有大量的读取,所以它堆积了一大串等待处理的查询。
为了解决这个问题,我把最大并行度设置为2个核心,而不是无限制的(我们的服务器是8个),并且我把并行度的成本阈值从5(平行度踢的时间)设置为10(秒)在查询中。
两者都可以在Sql Server Management Studio中find,方法是右键单击服务器并select“属性”,然后单击“高级”选项卡。
我发现这篇文章解释和解决了这个问题:
http://www.brentozar.com/archive/2013/08/what-is-the-cxpacket-wait-type-and-how-do-you-reduce-it/