我对 tempdb 文件和超线程有疑问。以下是软件/硬件规格。
服务器 2008 SP2 标准 X64 SQL 2005 标准 Sp3 x64 双四核 Xeon E5540(启用 HT)12 GB 内存
我的第一个问题是我应该创建多少个 tempdb 文件?指南上说是 16 个,但我读到 SQL Standard 只支持 4 个物理 CPU。sql 如何区分物理/逻辑或核心与插槽?
如果我能回答这个问题,那么可能还会有其他问题,所以我想先做最重要的事情。
感谢任何能提供帮助的人。
答案1
我应该创建多少个 tempdb 文件?
标准答案是:每个 CPU 核心一个。这是 SQL 2005 和 2008 的“基准”。
答案2
禁用超线程。SQL 和 HT 不能混合使用。
标准版仅支持 4 个 CPU,确实:SQL Server 2005 功能比较。但是,就像许可一样,Express/Workgroup/Standard CPU 限制(1/2/4)是针对每个物理处理器的,因此您的系统将使用所有 8 个内核。请参阅KB914278(虽然是针对 Express 的,但据我所知该算法也适用于其他版本)。
因此,您应该为 tempdb 创建 8 个大小相同的文件。当然,在您禁用 HT 之后。
答案3
对于 2005 年,我的经验法则如下:
在 TEMP 中,每个 CPU 每个文件组创建 0.25 到 1 个数据文件。双核(超标量)算作额外的 CPU - 超线程不算。
总 TEMP 至少应为任何数据库中最大表大小的 25% 左右。TEMP 应足够大。TEMP 会在 SQL Server 反弹时完全损坏并重建。TEMP 只能利用 SIMPLE 数据库恢复模型。
另请参见这里:http://www.microsoft.com/technet/prodtechnol/sql/2005/workingwithtempdb.mspx
干杯
答案4
在我看来:
'# 线程 = # tempdb's'