現時点のリリースノートには記載されていないのですが、SQL Server 2022 では、ラッチ (ページラッチ / バッファーラッチ) で待機が発生している場合の情報の出力内容が強化されています。
SQL Server では、ラッチは、
- バッファーラッチ
- 非バッファラッチ (Non Buffer Latch)
の二種類に大別されますが、今回は「バッファーラッチ」を例として情報を記載しています。
SQL Server のラッチについては、SQL Server でラッチの競合を診断および解決する で解説されていますので、ラッチについての詳細はこちらを確認してください。
ラッチについては SQL Server 以外の RDBMS でも実装されています。
- https://dev.mysql.com/doc/refman/5.6/ja/glossary.html#glos_latch
- https://www.postgresql.jp/document/pg653doc/ej/user/x3974.htm
- https://support.oracle.com/knowledge/Oracle%20Database%20Products/2015571_1.html
SQL Server ではラッチというと非バッファラッチを差すケースが多いですが、RDBMS における一般的なラッチは、SQL Server ではバッファーラッチとなり、メモリ上のページの保護をするために使用されている同期プリミティブを刺すことになると思います。
SQL Server バッファー プール内のページのデータの書き込みまたは読み取りが行われるときは常に、ワーカー スレッドにおいて最初にそのページのバッファー ラッチを取得する必要があります。 バッファー プール内のページにアクセスするために使用できるバッファー ラッチには、排他的ラッチ (PAGELATCH_EX) や共有ラッチ (PAGELATCH_SH) など、さまざまな種類があります。