1

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

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

有谁确切地知道是这种情况还是这个选项实际上是做什么的?

4

1 回答 1

1

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

于 2009-01-30T12:50:19.433 回答