SQL 服务器数据库恢复很慢 (FILESTREAM)
SQL Server database restore is very slow (FILESTREAM)
我创建了 MS SQL Server 2014 数据库的备份,其中包含大量二进制数据 (FILESTREAM),table 中约有 200 万条记录。
table 本身具有以下结构:
数据库大小约为 100GB(70GB 二进制 FILESTREAM 数据)。
尝试恢复数据库时,一切都顺利进行到 60% 点(需要几个小时),但随后速度变慢到爬行。我离开了一个星期,它并没有从 65% 的标记移动。
我注意到的几件事:
- 硬盘使用率下降。在资源监视器的开头,我看到同时访问了 DATA 文件夹中的多个文件(超过 20 个),并且磁盘忙于 100%。在 65% 标记之后,我看到 SQL 服务器进程只访问了 1-2 个文件。机器整体看起来一点也不忙。
- 看起来 SQL 服务器正在做某事,但速度很慢。
我怀疑问题可能出在 STREAM_DATA 行的数量上。
如何加快恢复过程?
我们对大文件流有同样的问题。我们如何解决:
1) 禁用 "Windows Search"(并在数据库所在的驱动器上建立索引)
2) 禁用所有文件的 "Last access time" 更新:
密钥名称:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
名称:NtfsDisableLastAccessUpdate
类型:REG_DWORD
值:1
3) 禁用 8.3 文件名生成:
密钥名称:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem
名称:NtfsDisable8dot3NameCreation
类型:REG_DWORD
值:1
详情见this article
我创建了 MS SQL Server 2014 数据库的备份,其中包含大量二进制数据 (FILESTREAM),table 中约有 200 万条记录。 table 本身具有以下结构:
数据库大小约为 100GB(70GB 二进制 FILESTREAM 数据)。 尝试恢复数据库时,一切都顺利进行到 60% 点(需要几个小时),但随后速度变慢到爬行。我离开了一个星期,它并没有从 65% 的标记移动。
我注意到的几件事:
- 硬盘使用率下降。在资源监视器的开头,我看到同时访问了 DATA 文件夹中的多个文件(超过 20 个),并且磁盘忙于 100%。在 65% 标记之后,我看到 SQL 服务器进程只访问了 1-2 个文件。机器整体看起来一点也不忙。
- 看起来 SQL 服务器正在做某事,但速度很慢。 我怀疑问题可能出在 STREAM_DATA 行的数量上。
如何加快恢复过程?
我们对大文件流有同样的问题。我们如何解决:
1) 禁用 "Windows Search"(并在数据库所在的驱动器上建立索引)
2) 禁用所有文件的 "Last access time" 更新:
密钥名称:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 名称:NtfsDisableLastAccessUpdate 类型:REG_DWORD 值:1
3) 禁用 8.3 文件名生成:
密钥名称:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem 名称:NtfsDisable8dot3NameCreation 类型:REG_DWORD 值:1
详情见this article