微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – SQL Server事务日志RAID

我们有三台sql Server服务器,每台服务器上都有大约五六个数据库.我们正在将这些服务器迁移到新的SAN,我正在研究最佳的RAID配置.目前,所有数据库的所有日志文件都共享一个RAID阵列,除了日志文件之外,此RAID阵列上没有其他任何内容,但所有数据库都使用相同的阵列作为其日志文件.

我已经读过,最好将日志文件放在不同的磁盘上.但在我们的情况下,我不确定是否最好有一个大型阵列,大约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.日志卷不应与具有大量磁盘活动的源共享磁盘.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_no='LJCG001H' THEN dbo.ELTPNAME(a.fw_nu) ELSE d.fm_name END),e.fw_state_nm,f.fw_rmk_nm
if not exists(select name from syscolumns where name='tod_no' and id=object_id('iebo09d12')) alter table iebo09d12 add tod_no varchar(
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_nm,g.fa_name from LJSS007H a (nolock) Left join LJPA002H b (nolock) On a.pa_no =b.pa_no Left jo
要在 SQL Server 2019 中设置定时自动重启,可以使用 Windows 任务计划程序。下面是详细的步骤: 步骤一:创建批处理文件 打开记事本。 输入以下内容: net stop "SQL Server (MSSQLSERVER)" net start "SQ
您收到的错误消息表明数据库 'EastRiver' 的事务日志已满,导致数据库操作失败。要解决这个问题,可以按照以下步骤操作: 1. 备份事务日志首先,备份事务日志以释放空间: BACKUP LOG [EastRiver] TO DISK = N'C:\Backup\East
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标识ID,若不知道怎么查询数据库的标识ID, 打开SQL Server management studio,点击工具。选择SQL Server Profiler。 登录,登录成功后,如果有个默认弹窗,先取消 新建追踪 命名
--最新的解决方法 --先创建用户帐户,不进行授权,然后通过下面的SQL语句将该用户帐户关联至对应的数据库用户。优点是避免了重新授权的操作。 USE tempdbEXEC sp_change_users_login 'Update_One', 'iemis', &#3
命令: ALTER TABLE 表名 add 列名 数据类型 default 默认值 not null 例如: ALTER TABLE LJEL005H add el_req int default 15 not null
declare @i int set @i=340 while @i<415 begin set @i=@iʱ insert into LJWK007H select '2024','28','9110','3PTSD621000000