我已经读过,最好将日志文件放在不同的磁盘上.但在我们的情况下,我不确定是否最好有一个大型阵列,大约8个驱动器,所有日志文件都在.或者更好的是创建四个两个磁盘阵列并为一些较大的数据库提供他们自己的日志文件专用磁盘?
解决方法
日志主要是顺序访问结构.简单地说,您可以将它们视为条目的环形缓冲区,即“将此数据写入此块”.当数据库引擎发出写入时,它实际上会将其中一个条目写入日志.然后,日志读取器进程异步跟进,并将块写入磁盘.
因为磁盘头活动相对较少,所以日志相对较快.但是,如果日志写入活动与同一磁盘上的随机访问活动存在争用,则争用会显着影响日志写入性能,从而影响整体数据库性能.
此外,将日志写入单独的磁盘可以提供冗余度量.如果备份数据,则记录条目,因为备份可以在已还原的数据库上前滚.这意味着灾难必须同时取出日志和数据卷以导致数据丢失.
出于这些原因,您应该在数据卷的单独阵列(不同的物理磁盘)上登录.如果没有争用,单个镜像对可以处理相当大量的日志流量,因此除非您拥有非常大的事务量,否则您可能不需要任何其他内容.但是,请确保没有其他任何内容在日志卷上生成磁盘活动.
的TempDB
如果您有大量使用TempDB的进程,那么在RAID-10卷上获得这样的性能将获得性能优势,因为这样可以提供比RAID-5更好的写入性能. (请参阅下面的回写缓存说明).如果您将数据和inedexs放在RAID-5卷上并且拥有大量使用TempDB的进程,那么将TempDB放在单独的RAID-10卷上可能会带来好处.如果您在数据卷上使用RAID-10,这也无关紧要.
数据和索引
如果您有非常大的数据量,您可以将数据放在RAID 5,6,50(条带RAID-5块)或60上.如果您的数据量较小,则可能使用RAID-10.如果您的数据卷上有RAID-5(或类似),您可能需要一个单独的TempDB卷,否则系统可能会正常工作,数据,索引和TempDB共享一个RAID-10卷.
回写缓存
如果SAN上的RAID控制器支持备用电池,则可以在其上设置回写缓存.这意味着控制器将写入缓存在RAM中并优化写入磁盘.回写式缓存可以在RAID-5卷上获得相当大的性能,但会为系统增加额外的故障模式.
如果电源出现故障,电池备份将保留缓存的数据几天.重新激活SAN时,它将写出缓存的条目.从理论上讲,这是相当可靠的,可能会有效.然而,有很多关于回写缓存失败的轶事故事.
如果您可以基于每个卷激活回写缓存,请考虑在日志中将其设置为非活动状态.这样,通过恢复数据库并前滚日志,可以在没有数据损坏的情况下恢复高速缓存故障,如上所述.对系统进行基准测试,以确保性能令人满意.
结论
单独的日志和数据卷.如果您使用的是RAID 4,5,40,50或60并且在TempDB中有大量活动,请考虑将TempDB放在单独的RAID-10卷上.除非您拥有极大的数据量,否则您可以在RAID-10卷上共享数据,索引和TempDB.日志卷不应与具有大量磁盘活动的源共享磁盘.