使用 EFS 加密数据库文件时 SQL Server 性能降低

适用范围:SQL Server
原始 KB 数: 922121

现象

使用加密文件系统(EFS)加密 SQL Server 中的数据库文件时,会降低某些 SQL Server 功能的性能。 例如, 读和 检查点 功能。

原因

出现此问题的原因是,来自 SQL Server 的异步 I/O 请求将转换为 EFS 加密的数据库文件中的同步 I/O 操作。 有关详细信息,请参阅 Windows 上的异步磁盘 I/O 显示为同步。 在 I/O 操作期间,工作线程会等待 I/O 操作完成。 当线程等待 I/O 操作时,SQL Server 计划程序将挂起,直到当前工作线程继续。 因此,保留在计划程序上的工作线程将挂起,直到第一个工作线程继续 I/O 操作。 但是,对于异步 I/O,线程请求 I/O 并继续执行其他任务。

注意

由于 新技术文件系统(NTFS)压缩,异步 I/O 似乎仍保持同步。 文件系统驱动程序不会异步访问压缩的文件。 相反,所有操作都是同步的。

解决方法

SQL Server 提供了许多加密技术,例如 透明数据加密 (TDE)Always Encrypted列级加密 Transact-SQL 函数。 请考虑使用这些 加密 功能,而不是 EFS。

注意

使用 EFS 加密数据库文件时,将加密整个数据库文件,而不考虑数据库文件中包含的实际数据和元数据。 还可以在可能丢失物理介质的情况下使用 EFS。

参考

配置安全文件系统