web-dev-qa-db-ja.com

ASYNC_IO_COMPLETIONで停止した状態で復元します

非常に頻繁にデータベースを復元すると、復元操作がスタックし、待機タイプがASYNC_IO_COMPLETIONになります。 PREEMPTIVE_OS_WRITEFILEGATHERに進むまで10〜20〜30分間このような状態が続く可能性があり、これが進行状況(percent_complete)が成長し始めるときです。

ただし、ASYNC_IO_COMPLETIONが表示され、復元のプロセスを中断してから再度実行すると、PREEMPTIVE_OS_WRITEFILEGATHERpercent_completeがすぐに表示されます。

この動作を理解し、復元操作を高速化するためのより適切な方法があるかどうかを学習することをお勧めします。ありがとうございました

5
George K

「インスタントファイル初期化」機能がまだ有効になっていない場合は、有効にしてみてください。復元プロセスを高速化し、大幅に高速化します。

Instant File Initialization(IFI)とは

SQL Serverは、使用する前にページを初期化する必要があります。したがって、ページをゼロで埋めようとします(ファイルのゼロ化)。 IFIが有効になっている場合、この部分はスキップされ、データファイルを瞬時に初期化してゼロ操作を回避できます。

IFIを有効にする方法

残念ながら、この機能を有効にするための組み込みのチェックボックスやトレースフラグはありません。代わりに、SQL Serverサービスアカウントには、「ボリュームメンテナンスタスクの実行」権限が必要です。詳しい手順については、以下のページをご覧ください。

MSドキュメント:ファイルの即時初期化

いつ有効になりますか?

SQLサービスがこのポリシーを取得してこのクールな機能を有効にするには、SQL Serverサービスを再起動する必要があることに注意してください。

ボーナス:IFIが有効になっているかどうかをSQLエラーログで確認できます。 「インスタント」、「初期化」などのキーワードを検索するには、「フィルター」を使用するか、以下のクエリ このブログ投稿から取得 を使用できます。

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 (%'