SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Database の PITR の進捗状況について (2023/11 時点)

leave a comment

SQL Database で PITR の進捗状況を確認する方法として、次の DMV を確認するという方法があります。

この DMV では「percent_complete」という項目が提供されており、この値から操作の進行状況を取得することができます。

当初は「0 / 50 / 100」の 3 段階で進行状況を示していたのですが、昨年、Monitor Database Restore progress at more granular level のような機能改善が行われ、「0 / 1-99 / 100」というように操作の進行状況に合わせた値の表示が行われるようになったというアナウンスがありました。

2023/11 時点で、PITR を実行してみたところ、私の環境では、上記の値は次のようになっていました。

2023/11/02 0:21:37 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 0:21:28 : 1
2023/11/02 0:22:27 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 0:21:28 : 1
2023/11/02 0:22:37 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 0:22:28 : 10
2023/11/02 0:56:29 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 0:55:29 : 10
2023/11/02 0:56:39 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 0:56:29 : 17
2023/11/02 0:58:39 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 0:58:29 : 17
2023/11/02 1:00:50 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 1:00:29 : 75
2023/11/02 1:01:20 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 1:00:29 : 75
2023/11/02 1:01:30 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 1:01:29 : 80
2023/11/02 1:02:21 : IN_PROGRESS : 2023/11/02 0:21:28 : 2023/11/02 1:01:29 : 80
2023/11/02 1:02:31 : COMPLETED : 2023/11/02 0:21:28 : 2023/11/02 1:02:29 : 100

 

以前より細かな粒度で percent_complete の値が更新されるようにはなったのですが、「1-99」の中で細かな値の更新は行われていませんでした。

現状の percent_complete の更新状況について確認をしてみたところ、次のような仕様となっているということでした。

  • 0 % : 開始されていない状態です。
  • 1 – 9 % : プロビジョニングが行われている状態です。
  • 10 – 79 % : データのリストアが行われている状況です。
  • 80 – 99 % : Business Critical および Premium のデータベースに必要な HA レプリカの追加シードです (なお、General Purpose のデータベースにおいてはこのフェーズがスキップされます)。
  • 100 % : リストアが完了した状態です。

10 – 79 がデータベースのリストアが行われている状況となりますが、上述の実行結果では「0:22:28~0:55:29」の時間帯で 10 を継続しており、その後 10 / 17 / 75 / 80 と値が変化しています。

今回のケースでは、percent_complete が 10 の時間帯が一番長い (33分) ですね。

SQL Database の PITR は、完全バックアップ / 差分バックアップ / トランザクションログバックアップ を順にリストアすることで、目標地点までリストアを行います。

一般的には完全バックアップのリストアが最初に実行され、最もリストアに時間がかかる処理となります。

最も理想的なのは完全バックアップのリストアの進捗が percent_complete で表現されるとよいのですが、上記の実行時間を眺めているとそういうようにはなっていないように見えました。

実際の実行時間を確認すると、percent_complete は「リストア対象のファイル数と、現在リストアを実行しているファイル」を基に算出されているように見えました。

そのため、現在リストアしているバックアップのファイルサイズが大きい場合には、percent_complete は中々一定の値から進まないのではと思っています。

SQL Server の RESTORE の STATS のようにファイル単位のリストアの進捗状況についても percent_complete に考慮された情報となっていると嬉しいのですが動作を見ている限りはそのようにはなっていないようです。

SQL Database のリストアの進行状況の改善については以前から提起されており、Track SQL DB restore progress でもフィードバックが上がっています。

2022 年に実施された機能改善で、今までより取得可能な情報の改善が行われてはいますが、まだ改善の余地があるかと思っています。

利用者が一番知りたいのは「リストアが後分で完了するか」だと思います。

現在もフィードバックは受け付け中の内容となりますので、リストアの進捗状況の改善について、気になる方がいたら、上記のフィードバックから投票やコメントをお願いいたします。

Share

Written by Masayuki.Ozawa

11月 7th, 2023 at 9:57 am

Posted in SQL Database

Tagged with

Leave a Reply