由于我没有接触过SAN(存储区域网络),所以这个问题有点笼统。
是否可以使用 SAN 执行任何优化或配置更改来提高 SQL Server 性能?
答案1
使用 SAN 进行的调整包括:
- 确保您有足够的磁盘来支持您的 IO 要求。
- 确保 mdf、ldf 和 tempdb 是分开的。
- 确保顺序 IO 数据库(数据仓库)与随机 IO 数据库(OLTP)位于不同的主轴上。
- 降低或禁用支持 OLTP 数据库的 LUN 上的读取缓存量,因为它们通常无法使用读取缓存。
- 最大化白色缓存的数量以避免强制刷新的情况。
如果您有机会参加 11 月份在西雅图举行的 SQLPASS 峰会,我将为 DBA 做一个关于存储的演讲,主要涉及 SAN 存储。
答案2
请查看 Brent Ozar 关于使用 SQLIO 进行 SAN 调优的教程:
http://sqlserverpedia.com/wiki/SAN_Performance_Tuning_with_SQLIO
我使用这种技术来识别我们管理 OLTP 系统的旧远程 SAN 上的瓶颈(瓶颈是只有一张主机总线适配器卡)。
查看以下最佳实践白皮书:
http://technet.microsoft.com/en-us/library/cc966412.aspx
白皮书中提到 - 如果您没有使用 Windows 2008,请记住在卷上设置正确的偏移量:
http://msdn.microsoft.com/en-us/library/dd758814.aspx
按照 mrdenny 的解释,分离数据库的日志和数据文件以及 tempdb,并使用适当的 RAID 级别。
虽然不是 SAN 特有的,但很有用 - 在创建数据库的事务日志时预先增加它们以避免虚拟日志文件碎片:
http://www.sqlskills.com/BLOGS/KIMBERLY/post/8-Steps-to-better-Transaction-Log-throughput.aspx
答案3
这是一个普遍性的问题,但我认为,使用 SAN 可以进行的最佳优化是 LUNS 和 RAID 配置的原始部署。
例如,如果您有一个 24 托架 SAN,确定每个 LUN 的大小、RAID 配置和使用的磁盘数量。从那里,您可以通过优化位置来均匀分配 SQL 服务器的磁盘 i/o。
专用于读取数据库、大量写入或混合数据库、tempdb 等的 lun...
如果这有助于指明正确的方向,请告诉我,如果您还有其他问题,请随时提问,祝您有美好的一天。
最好的,尼克