“启用高级性能”是否会覆盖Win 2k3 / SQL Server 2005上的FILE_FLAG_WRITETHROUGH

时间:2009-01-29 15:21:20

标签: sql-server sql-server-2005 windows-server-2003 write-through

SQL Server使用FILE_FLAG_WRITETHROUGH打开文件,这似乎强制写入物理磁盘。在SQL Server中,这称为“强制单元访问(FUA)”;可以找到讨论这个问题的白皮书here。许多SAN似乎都很尊重这一点,这可能解释了我在连接到IBM鲨鱼的服务器上开发的ETL进程的性能下降。

在Windows 2003服务器上的磁盘管理器中的对话框中,可以选择“启用高级性能”。我可以找到间接和伪造的文档,暗示这会覆盖强制写入行为。

是否有人确切知道是否是这种情况或此选项实际上做了什么?

1 个答案:

答案 0 :(得分:1)

事实并非如此。 SQL Server将始终对其打开的文件启用直写。这可确保任何写入都不会缓存在本地Windows磁盘缓存中。磁盘控制器(RAID控制器等)或SAN上的任何内容都将拥有自己的缓存(希望电池支持和镜像),并且无论文件在操作系统下如何打开,都将具有单独的缓存策略。不要在没有备用电池的缓存上启用回写。如果在写入期间断电,数据库将会损坏。