我们正在构建新的 SQL 服务器,希望获得一些硬件方面的建议。目前,我们在内部构建所有系统。根据以下信息,您会推荐哪种驱动器和外部 SAS 机箱。此外,在这种工作负载下,SAS 相对于 SATA2 的优势有多大?
目前基本规格:
- AMD Phenom II X4 955 处理器
- 8GB 内存
- 2TB RAID6 存储(考虑 450GB Seagate Cheetah 15K.6 硬盘)
- 1TB RAID1 存储(以下原因)(1TB Seagate Barracuda ES.2)
- 3ware 9690SA SAS 控制器
软件:
- Windows 2003 或 2008 服务器(尚未决定)
- SQL Server 2005 或 2008(取决于应用程序兼容性)
工作量:
对于大多数应用程序(约 1TB)(财务、内部应用程序等),此服务器的读写负荷相当大。我们还在 ArcGIS 使用的服务器上存储了 GIS 数据。我们的计划是将矢量数据放在主 RAID6 阵列上,将栅格数据(约 750GB)放在 RAID1 阵列上(因为它的使用频率不高)。
答案1
对于主要不是只读的繁重数据库工作,我建议使用 RAID10,而不是 RAID5 或 6。在 4 驱动器 RAID6 阵列上,每个块写入(或部分块写入)可能会变成一次读取(以获取另一个数据块),然后是三次写入(一次用于初始写入,两次用于两个奇偶校验块),这可能会对写入性能产生重大影响。使用 RAID10,每次(部分)块写入只是两次磁盘写入。
如果您的数据库访问确实包含很少的写入,那么 RAID6 可能更适合冗余,因为 RAID6 阵列可以在任何两个驱动器发生故障时存活下来,而四个驱动器的 RAID10 阵列只能在两个驱动器发生故障的 6 种可能组合中的 4 种时存活下来,但您声明您预计该活动将是读写密集型的(并且您有良好的备份和灾难恢复计划,对吗?)。
显然,请确保您使用的是 64 位版本的 Windows 和 SQL Server,否则您将无法使用所有 RAM,除非出现性能消耗大的黑客攻击,如 PAE。说到内存:如果可以,我建议您使用更多内存。如今,RAM 并不昂贵,即使是知名品牌的 ECC RAM 也不贵,因此将 RAM 从 8 增加到主板上可以容纳的任何数量并不是一个坏主意。对于 SQL Server 中的大多数应用程序(具有足够大的数据库),您会在任何可观的负载下注意到它的好处,因为它将大大减少读取查询的 I/O 操作,因为更大的工作集可以保存在内存中。从您的描述来看,您的数据大小和活动模式似乎会受益于您实际投入的 RAM 数量。如今,许多新服务器都支持 16Gb RAM,32Gb 也并不罕见(而且对 64Gb 的支持也越来越少,尽管这正在进入“专业”市场,因此您可能需要为额外的 RAM 支付额外费用)。
答案2
如果您的数据库是写入密集型的,请使用 RAID 10,而不是 RAID 6。使用速度非常快、性能非常好的 SAS 磁盘。
购买比您需要的更大的机箱,这样您就可以适应它。我最近在我的生产数据库服务器上添加了一个四核处理器 - 我可以告诉你,在我的职业生涯中,我很高兴我买了双插槽主板,尽管我一开始只需要四个核心。CPU 利用率从平均 60% 到平均 30%,只有极少数的 100% 峰值,这对我们的性能产生了巨大的影响。不必完全从一台机器迁移到另一台机器来实现这一点真是太棒了 - 在额外的插槽中插入另一个芯片大约需要 20 分钟。至于 RAM;放入机器可以承受的内存。
需要注意的是,我们的生产系统使用 SAS,而我们的开发系统使用 SATA。我们绝对可以感受到并量化差异;在满负荷的生产机器上可能需要 1.5 秒的查询,在未满负荷的开发服务器上可能需要 3 秒。当然,这绝对是轶事,还有其他差异;但我们注意到 IO 绝对是杀手。1.5 秒没什么大不了的,对吧?但在生产中,这是 1.5 秒的差异 * x 用户 * 每小时 y 个请求。
关于 IO 的另一个想法:我们小心地将我们最常用的最大表设置为包含多个文件的文件组。这样做的一个性能增强是 SQL 将对文件组中的每个文件进行线程请求 - 因此,如果 BigOverUsedTable 在 FileGroup1 上,并且 FileGroup1 中有四个文件,并且您的数据库有 8 个核心,它实际上将使用四个核心来执行“从 BigOverUsedTable 中选择大数字运算讨厌的查询” - 否则,它只会使用一个 CPU。我们从这篇 MSDN 文章中得到了这个想法:
http://msdn.microsoft.com/en-us/library/ms944351.aspx
来自TFA:
“文件组使用并行线程来改善数据访问。当按顺序访问表时,系统会为每个文件并行创建一个单独的线程。当系统对具有四个文件的文件组中的表执行表扫描时,它会使用四个单独的线程并行读取数据。通常,在单独的磁盘上使用多个文件可以提高性能。文件组中的文件太多可能会导致过多的并行线程并造成瓶颈。”
根据这个建议,我们在 8 核机器上的文件组中有四个文件。效果很好。
答案3
对于随机访问操作而言,SAS 比 SATA2 具有巨大优势。我会不惜一切代价避免使用 SATA。您提到了内部构建,您看过像这样的机架系统吗?
http://www.newegg.com/Product/Product.aspx?Item=N82E16811219021
它将在一个机架安装单元中为您提供 20 个 SAS 驱动器托架。添加您选择的主板和 SAS 控制器。