辅助数据文件的数量取决于机器上(逻辑)处理器的数量。通常情况下,如果逻辑处理器的数量小于或等于8个,则使用与逻辑处理器相同的数据文件数。如果逻辑处理器的数量大于8个,则使用8个数据文件。
在服务器属性处理器一节中,我可以看到有2个NUMA节点,每个节点有12个处理器。在SQL错误日志中,我可以看到:SQL Server detected 24 sockets with 1 cores per socket and 1 logical processors per socket. 24 total logical processors.
Automatic soft-NUMA was enabled because SQL server has detected hardware NUMA nodes
with greater than 8 physical cores. 

看起来这台计算机有4个物理处理器节点,每个节点有6个逻辑处理器。在这个场景中,推荐的tempdb数量的值是多少,这取决于NUMA节点的数量还是每个NUMA节点的逻辑处理器总数或逻辑处理器的数量?
我之所以问这个问题,是因为之前的DBA已经将tempdb文件的数量设置为6(这是单个NUMA节点中的逻辑处理器数量)。根据上面的MSDN链接,我理解最好的做法是将tempdb文件的数量配置为8个或更多,递增为4 (12、16、20、24)。
发布于 2022-05-15 01:15:39
TempDB数据文件配置通常基于全部逻辑CPU,而不考虑NUMA计数。
添加数据文件的典型原因是在单个文件中创建和删除对象时,GAM、SGAM或PFS的锁定。与用户数据库的数据文件不同,对象经常在TempDB中不断创建和删除。通过添加数据文件,您可以通过将这些操作扩展到其他文件来克服这一限制。随着CPU数量的增加,单个数据文件中出现更多争用的可能性也随之增加。
多年来,我一直遵循链接文档中提到的一般指导原则。设置TempDB数据文件计数等于CPU计数,最多为8。即使在16+ CPU的系统中,我也将创建8个文件。只有在观察到争用的情况下,TempDB才会添加更多的内容,增量为4。
当谈到其他配置(如MAXDOP )时,与NUMA相关的限制的一般原因是试图在同一个内存库上运行单个查询。在这种情况下,您不希望查询分散在不同NUMA节点上的CPU核心上。但是,对于TempDB争用,您处理的是运行在更严重的查询上的所有查询,而不仅仅是并行的单个查询的范围。因此,您不关心NUMA。
https://dba.stackexchange.com/questions/312133
复制相似问题