MS Sql Server 因“暂停”查询而过载,主要是读取。有任何解决这个问题的方法吗?

AAA*_*AAA 5 mysql locking timeout sql-server

我有一个 Microsoft Sql Server,它可以处理由 java 和 c# 中的多个客户端组成的公司软件套件的中等流量。

它因“暂停”查询而过载。他们最终通过了,但有些超时(尤其是写入)。查询主要是读取。

有什么办法可以加快速度,或者以其他方式修复它?

这是我的活动监视器的图片,以显示我在说什么:

http://i.imgur.com/9ADDASf.png

旁注:我们计划迁移到 MySql 已经有一段时间了。这会有所帮助吗?我知道 MS Sql 很强大,但它的默认值是 Read-Committed,这会伤害什么吗?

AAA*_*AAA 2

好吧,弄清楚问题了。

MS Sql 的默认设置使用服务器的所有核心来执行大型查询。我们有大量读取,因此堆积了一长串等待处理的查询。

为了解决这个问题,我将最大并行度设置为 2 个核心,而不是无限制(在我们的服务器中为 8 个),并将并行度成本阈值从 5 设置为 10(秒),这是并行度启动的时间进行查询。

通过右键单击服务器并选择“属性”,然后单击“高级”选项卡,可以在 Sql Server Management Studio 中找到两者。

我发现这篇文章解释并解决了这个问题:

http://www.brentozar.com/archive/2013/08/what-is-the-cxpacket-wait-type-and-how-do-you-reduce-it/