代码之家  ›  专栏  ›  技术社区  ›  ConcernedOfTunbridgeWells

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

  •  1
  • ConcernedOfTunbridgeWells  · 技术社区  · 17 年前

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

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

    有人确切地知道情况是否如此,或者这个选项实际上有什么作用吗?

    1 回复  |  直到 16 年前
        1
  •  1
  •   Mitch Schroeter    17 年前

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