症状
SQL Server 2022 でデータベースの In-Memory OLTP 機能が有効になっている場合、トランザクション ログ ファイルが継続的に拡張されます。 さらに、SQL Server エラー ログには、 Close thread is falling behind: 4 checkpoints outstandingなどのメッセージが含まれている場合があります。
SQL Server インスタンスを再起動すると、データベースの復旧プロセスの完了に時間がかかる場合があります。
sys.databases と sys.dm_db_xtp_checkpoint_stats に関する問題をトラブルシューティングする
カタログ ビュー sys.databases を使用して情報を収集し、この問題のトラブルシューティングを行うと、
log_reuse_wait_desc列に過度な切り捨ての理由としてXTP_CHECKPOINTが表示されます。 この値は、トランザクション ログがインメモリ OLTP (旧称 Hekaton) チェックポイントの発生を待機していることを示します。 チェックポイント操作の遅延を示しており、パフォーマンスやログ ファイルの増加に影響する可能性があります。SQL Server 動的管理ビュー (DMV) sys.dm_db_xtp_checkpoint_stats を使用して情報を収集し、この問題のトラブルシューティングを行う場合、
outstanding_checkpoint_count列には、長期間にわたって 0 以外の値が表示されます。 チェックポイントが効率的に発生せず、パフォーマンスとログ ファイルの増加に影響を与える可能性があることを示します。
原因
SQL Server 2022 では、メモリ不足の状態を減らすために、大規模なメモリ サーバーのメモリ管理を改善する新機能が導入されました。 この変更における既知の問題により、「Symptoms」セクションで説明されている動作が発生することがあります。
解像度
この問題を解決するには、次の手順に従います。
- SQL Server インスタンスのスタートアップ パラメーターとして -T9810 を追加します。
- インスタンスを再起動します。
- チェックポイントを実行し、ログ バックアップを作成し、
log_reuse_wait_descを確認し、領域を再利用するために必要な場合はログを圧縮します。
注
この問題は、SQL Server 2022 の Cumulative Update 7 で修正されました。
詳細
trace フラグ 9810 は、インメモリ OLTP エンジンがスレッド ローカル ストレージ (TLS) メモリを回収することを無効にし、SQL Server 2019 の動作に戻します。