次の方法で共有


SQL Server 2022 のインメモリ OLTP を使用するデータベースのトランザクション ログ ファイルが拡張される

現象

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 」セクションで説明されている動作につながる場合があります。

解決方法

この問題を解決するには、次の手順に従います。

  1. SQL Server インスタンスのスタートアップ パラメーターとして -T9810 を追加します。
  2. インスタンスを再起動します。
  3. チェックポイントを発行し、ログ バックアップを作成し、 log_reuse_wait_descを観察し、領域を再利用するために必要な場合はログを圧縮します。

Note

この問題は、sql Server 2022 Cumulative Update 7 で修正されました。

詳細

trace フラグ 9810 は、インメモリ OLTP エンジンがスレッド ローカル ストレージ (TLS) メモリを再利用することを無効にし、SQL Server 2019 の動作に戻します。