我对 MS-SQL 的配置还很陌生,所以希望得到一些建议。我有一台 Dell PE2950 Twin Quad Xeon 服务器,配有 32GB RAM,运行 MS-SQL 2008 Web 版。
驱动器是 4x73GB SAS RAID 6 和 2x160GB SSD RAID 0。
鉴于我无法更改此驱动器配置,您对 db/log 文件、系统表和 tempdb 有何建议?
谢谢 Dean
答案1
我会把所有东西都放在 RAID 6 上。而且我公开表示不喜欢这种奇怪的 RAID 设置。
RAID 0 对没有冗余。无论生产环境中使用的是 SSD 还是老式磁盘,我都不会信任它。
我每个月都会听到一两起关于 SSD 突然过早损坏的可怕故事,这让事情变得更加令人担忧。通常,这是消费级套件。我相信一些读过这篇文章的人有过很好的经历。但是……如果这是一个创收网站或面向公众的网站,那就不值得我这么做了。另一件事是,考虑到 RAID 6 的读取速度可能不如 SSD 的写入速度快,SSD 可能完全是多余的。
如果这对 SSD 是 RAID1,情况就会有所不同。我会将日志文件(针对所有数据库)粘贴在那里,也许还有 tempdb 本身。
由于您无法更改 RAID 设置,所以我认为您别无选择。
但事实并非如此那如果你自己拥有所有这些 RAM,那就太糟糕了。
假设您没有在该机器上运行任何其他大型软件,由于您有 2x 9 GB 数据库和比这多得多的内存,您的所有数据将(最终)缓存在 RAM 中。一旦数据进入内存,并且假设您不会对 tempdb 进行大量写入(OLTP 数据库通常不应该这样做),驱动器的速度就不那么重要了。如果您的站点数据库在完整恢复模式下运行,则最大的例外是日志写入和日志备份(读取日志文件)。RAID6 的写入速度(相对)会很慢,我猜 73 GB 驱动器不是 15KRPM 磁盘,但该卷应该能够处理几 MB/秒。您需要写入日志文件的速率取决于您的站点有多忙以及写入效率如何。
与用户数据库相比,系统数据库(master、model 和 msdb)并不大,几乎不需要 I/O。如果它们也位于 RAID6 上,则不会有太大影响。
我可能会考虑使用 RAID0 对来保存备份,假设它们在合理的短时间内被复制到其他地方,但 SSD RAID 对似乎真的是浪费钱。
当您启动系统时,请务必监控存储子系统的负载,以确保其不会过载。如果过载,您可能需要更改存储配置,以使您的网站性能更好。
答案2
如果不能准确了解数据类型、查询类型、表大小、是否使用索引、外键、为 mssql 分配了多少 RAM、机器上还运行着什么程序等,那么就很难说了。在正常运行的系统中,在执行某种写入操作之前,磁盘上执行的操作很少。
DBA 能通过自己的工作赚到很多钱是有原因的……而且市场上有几十种不同“类型”的 SQL 服务器也是有原因的。这里没有通用的万能答案。