我有一个在 SQL 2008 R2 企业版上运行的 OLTP SQL 数据库,它在投入生产后的几个月内可能相当繁忙(5000 批/秒)。查看服务器配置我对设置 MAXDOP 有疑问,但是现在我发现作为该论坛的普通读者普遍共识是对于需要并行操作的任务(例如索引重建和更改成本阈值)将服务器范围的 MAXDOP 设置保留为 0并行度到更高的数量(15 或 20 而不是默认的 5)。
但是,此服务器具有 NUMA 节点并基于这些 MS 支持文章 http://support.microsoft.com/kb/329204
http://support.microsoft.com/kb/2023536
为防止代价高昂的外部内存访问,建议设置 MAXDOP = 物理处理器中的内核数。
此服务器有 2 个物理处理器,每个插槽上有 16 个逻辑(8 个物理)内核。该MS支持KB建议的指南是否仍然有效?
我知道一切都需要尝试和测试,但我的目标是将 MAXDOP 设置为最佳理论值,并在以后需要时进行调整。基于它我应该将 MAXDOP 设置设置为 8 吗?
通常,我建议我的客户不要使用 MAXDOP。SQL Server 支持 NUMA,因此它知道处理器在哪个 NUMA 节点以及内存在哪个 NUMA 节点,并且最好将工作分配给您正在查找的数据的正确 NUMA 节点上的调度程序.
研究这类东西还需要知道你有多少个 NUMA 节点。每个物理处理器是在其自己的 NUMA 节点中,还是它们在同一个 NUMA 节点中?