MS SQL Server (MSSQL)

SQL Server - Lock 과 Latch 란?

초심으로 2022. 9. 2. 11:50

728x90

DB를 전문으로 작업하는 사람은 아니지만 개발을 하다보면 ... 프로그램이 느려요,  멈춰서 안 움직여요.. 혹시 무슨 문제 있어요?라는 문의를 간혹 받게 된다. 그럴 때면 Lock 현황을 확인하고, 전체적인 리소스 문제가 없는지 확인하기 위해 Activity monitor를 확인하곤 한다. 

 

문제가 되는 상황에서 Activity monitor  대기 범주에 상단에 보통 위치하는 Lock 과 Latch에 대해 검색해 봤다.

 

Lock (자물쇠)과 Latch (걸쇠)는 비슷한 영어의 뜻이 있어 무언가를 배타적으로 Hold 하고 있는 느낌적인 느낌은 알겠지만 무엇이 다를까?

 

구조체 목적 제어 성능 비용
Latch 메모리 내 구조의 일관성을 보장합니다. SQL Server 엔진만 제어할 수 있습니다. 성능 비용이 낮습니다. 최대 동시성을 허용하고 최대 성능을 제공하기 위해 래치는 논리 트랜잭션 기간 동안 유지되는 잠금과 달리 메모리 내 구조에 대한 실제 작업 기간 동안만 유지됩니다.
Lock 트랜잭션 일관성을 보장합니다. 사용자가 제어할 수 있습니다. 잠금은 트랜잭션 기간 동안 유지해야 하므로 래치에 비해 성능 비용이 높습니다.

 

즉.. 프로그램 상 Transaction 처리로 인한 Lock 이 발생한 경우인지, 아니면 그 이외 내부 작업인지에 따라 나뉜다고 이해하면 될 것 같다.

반응형

 

 

* 참고: https://blog.sqlauthority.com/2014/03/16/sql-server-what-is-the-difference-between-latches-and-locks/

 

SQL SERVER - What is the Difference Between Latches and Locks - SQL Authority with Pinal Dave

A very common question I often get in the email is "What is the difference between latches and locks?" The answer to this question is not an easy one.

blog.sqlauthority.com

 

* 참고: https://docs.microsoft.com/ko-kr/sql/relational-databases/diagnose-resolve-latch-contention?view=sql-server-ver16 

 

백서: 래치 경합 진단 및 해결 - SQL Server

이 문서에서는 SQL Server의 래치 경합을 진단하고 해결하는 방법을 자세히 살펴봅니다. 이 문서는 원래 Microsoft SQLCAT 팀이 게시한 것입니다.

docs.microsoft.com

 

반응형