好吧,对于任何有兴趣的人,
几个月前,我们通过将直接连接的SSD驱动器安装到3台服务器中的每一个中,并将数据库数据和日志文件从SAN移到这些SSD驱动器中,解决了Question问题
在我们决定安装SSD驱动器之前,这里总结了我为研究此问题所做的工作(使用来自该问题的所有文章的建议):
1)开始在所有3台服务器上收集以下驱动器的PerfMon计数器:
Disk F:
是基于SAN的逻辑磁盘,包含MDF数据文件
Disk I:
是基于SAN的逻辑磁盘,包含LDF日志文件
Disk T:
是直接附加的SSD,专用于tempDB
下图是2周内的平均值
Disk I: (LDF)
有这样一个小的IO和延迟非常低,所以磁盘I:可以忽略
你可以看到,Disk T: (TempDB)
有IO比较大Disk F: (MDF)
,而且它同时具有更好的延迟- 0毫秒
显然,磁盘F出了点问题:尽管IO较低,但数据文件所在的位置却具有较高的延迟和平均磁盘写入队列
2)使用本网站的查询检查单个数据库的延迟
https://www.brentozar.com/blitz/slow-storage-reads-writes/
主服务器上很少有活动的数据库具有150-250毫秒的读取延迟和150-450毫秒的写入延迟
有趣的是,主数据库和msdb数据库文件的读取延迟高达90毫秒,鉴于其数据量小和IO低,这是可疑的-另一个迹象表明SAN出了问题
3)没有具体的时间安排
在显示“ SQL Server遇到事件...”的消息期间,
记录这些消息时没有维护或磁盘沉重的ETL运行
4)Windows事件查看器
没有显示任何其他提示问题的条目,但“ SQL Server遇到了问题...”
5)开始检查前10个查询
从sp_BlitzCache(cpu,读取等)开始,并在可能的情况下进行优化
没有超级IO繁重的查询会搅乱大量数据并严重影响存储,尽管
数据库中的索引还可以,但我维护它
6)我们没有SAN团队
我们只有1位sysadmin可以帮助您偶尔
访问SAN的网络路径-它是多路径的,3台服务器中的每台都有2条网络电缆,分别通向交换机和SAN,其速度为1 GB /秒
7)没有CrystalDiskMark结果
或服务器设置时的其他任何基准测试结果,因此我不知道速度应该是多少,并且此时无法进行基准测试以查看当前的速度,因为这会影响生产
8)在有关数据库的检查点事件上设置扩展事件会话
XE会话有助于发现在“ SQL Server遇到事件...”消息期间,检查点发生的速度非常慢(最多90秒)
9)SQL Server错误日志
包含的“ FlushCache”,“饱和”条目
这些条目应该在给定数据库的检查点时间超过恢复间隔设置时显示
详细信息显示,检查点尝试刷新的数据量很小,并且需要很长时间才能完成,并且总体速度约为0.25 MB /秒...很奇怪
10)最后,此图显示了存储故障排除图表:
看来我们只是遇到了“硬件问题:与系统管理员/硬件供应商合作,以解决对SAN,旧/故障驱动程序,控制器,固件等的任何错误配置”。
在另一个问题“慢速检查点...”中,慢速检查点和闪存上的15秒I / O警告
Sean很好地列出了必须在硬件和软件级别检查哪些项目以进行故障排除
我们的系统管理员无法检查列表中的所有内容,因此我们只是选择在此问题上扔一些硬件-一点也不贵
解析度:
我们订购了1 TB SSD驱动器并直接安装到服务器中
由于我们有可用性组,因此将数据库数据文件从SAN迁移到辅助副本上的SAN上,然后进行了故障转移,并在以前的主数据库上迁移了文件,从而使总停机时间最少-不到1分钟
现在,每个服务器都有数据库数据的本地副本,并且对上述SAN进行了完整/差异/日志备份
,而Windows Event Viewer日志中不再显示“ SQL Server遇到了发生...”消息,以及备份的性能,完整性检查,索引重建,查询等已大大增加
自从将DB文件迁移到SSD以来,在IO延迟方面提高了多少性能?
为了评估影响,迁移前2周和迁移后4周使用的性能Windows Performance Monitor记录:
下面也是数据库级别延迟统计信息比较(迁移前后使用的SQL Server捕获的虚拟文件统计信息)
摘要
从SAN迁移到直接连接的本地SSD非常值得,
这对存储的延迟产生了很大的影响,并且平均改善了90%以上(尤其是WRITE操作),并且IO不再出现20-50秒的峰值
迁移到本地SSD不仅解决了存储性能问题,还解决了我担心的数据安全性(如果SAN出现故障,则所有3台服务器同时丢失数据)