恢复卡在 ASYNC_IO_COMPLETION 中

Geo*_*e K 5 sql-server restore wait-types

当我还原数据库时,还原操作经常卡住并且等待类型为ASYNC_IO_COMPLETION. 它可以处于这种状态 10-20-30 分钟,直到它继续前进PREEMPTIVE_OS_WRITEFILEGATHER,这是进度 ( percent_complete) 开始增长的时候。

但是,如果我看到ASYNC_IO_COMPLETION并中断恢复过程然后再次运行它,我会立即看到PREEMPTIVE_OS_WRITEFILEGATHERpercent_complete上升。

最好理解这种行为并了解是否有更合适的方法来加速还原操作。谢谢

Bah*_*ban 6

如果尚未启用“即时文件初始化”功能,请尝试启用它。它加快了恢复过程并使其速度显着加快。

什么是即时文件初始化 (IFI)?

SQL Server 需要在使用页面之前对其进行初始化。因此,它尝试用零填充页面(将文件归零)。如果启用 IFI,它会跳过这部分,并且可以立即初始化数据文件以避免归零操作。

如何启用 IFI?

不幸的是,没有内置的复选框或跟踪标志来启用此功能。相反,SQL Server 服务帐户需要具有“执行卷维护任务”权限。查看下面的页面,了解有关如何执行此操作的详细步骤。

MS 文档:即时文件初始化

什么时候启用?

请注意,您需要重新启动 SQL Server 服务,以便 SQL 服务选择此策略并启用此很酷的功能。

奖励:您可以检查 SQL 错误日志以查看是否启用了 IFI。使用“过滤器”来搜索诸如“即时”、“初始化”之类的关键字,或者您可以使用以下来自这篇博客文章的查询。

SELECT  @@SERVERNAME AS [Server Name] ,
    RIGHT(@@version, LEN(@@version) - 3 - CHARINDEX(' ON ', @@VERSION)) AS [OS Info] ,
    LEFT(@@VERSION, CHARINDEX('-', @@VERSION) - 2) + ' '
    + CAST(SERVERPROPERTY('ProductVersion') AS NVARCHAR(300)) AS [SQL Server Version] ,
    service_account ,
    instant_file_initialization_enabled FROM sys.dm_server_services WHERE servicename LIKE 'SQL Server (%'
Run Code Online (Sandbox Code Playgroud)