我们正在考虑将 SQL Server 2008 EE 实例集群化。存储在 SAN 上。我们可以将 tempdb 数据/日志文件放在 SAN 上吗?此解决方案的优缺点是什么?为了获得最佳性能,我们可以创建与处理器核心相同数量的 tempdb 数据文件吗?
答案1
您唯一的选择是将 TempDB 放在共享磁盘资源(即 SAN)上。标准磁盘 I/O 争用是您关心的问题,对于 TempDB 来说更是如此,因为它是整个实例的核心瓶颈。
至于 TempDB 有多少个文件,请参阅 Paul Randal 关于此主题的帖子。他负责存储引擎,因此他是该主题的专家:http://www.sqlskills.com/BLOGS/PAUL/post/A-SQL-Server-DBA-myth-a-day-(1230)-tempdb-should-always-have-one-data-file-per-processor-core.aspx
答案2
如果你使用 MS SQL 集群,我的理解是全部卷必须位于共享存储上,通常是 SAN。
答案3
是的,您可以将 tempdb 数据和日志文件放在 SAN 上。您不一定有给你可以(这里要强调的是要小心)在每个节点的直接附加存储 (DAS) 上都有 tempdb,但是驱动器号和大小必须匹配,否则会遇到问题。优点和缺点与 SAN 上的常规 DB 文件基本相同,并且适用相同的 HA 概念。IO 性能可能是一个问题,因此请将其放在可以获得更好性能的地方。
至于“最佳性能”——没有固定的规则规定您应该为 tempdb 保留多少个文件。从 1/4 核心开始,测试您的工作负载,如果需要,可以增加。如果 tempdb 的文件太多,您的 IO 子系统可能无法跟上,最终可能会出现瓶颈。