我有一个在SQL 2008 R2企业版上运行的OLTP SQL数据库,可能在投入生产后的几个月内非常繁忙(每秒5000批次)。在查看服务器配置时,我对设置MAXDOP有疑问,然而现在作为这个论坛的常规读者,我发现普遍共识是将服务器范围的MAXDOP设置为0,用于需要并行操作的任务(例如索引重建),并将并行操作的成本阈值设置为更高的数字(15或20,而不是默认的5)。 然而,这台服务器有NUMA节点,根据这些微软支持文章 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节点中?