728x90
DB를 전문으로 작업하는 사람은 아니지만 개발을 하다보면 ... 프로그램이 느려요, 멈춰서 안 움직여요.. 혹시 무슨 문제 있어요?라는 문의를 간혹 받게 된다. 그럴 때면 Lock 현황을 확인하고, 전체적인 리소스 문제가 없는지 확인하기 위해 Activity monitor를 확인하곤 한다.
문제가 되는 상황에서 Activity monitor 대기 범주에 상단에 보통 위치하는 Lock 과 Latch에 대해 검색해 봤다.
Lock (자물쇠)과 Latch (걸쇠)는 비슷한 영어의 뜻이 있어 무언가를 배타적으로 Hold 하고 있는 느낌적인 느낌은 알겠지만 무엇이 다를까?
구조체 | 목적 | 제어 | 성능 비용 |
Latch | 메모리 내 구조의 일관성을 보장합니다. | SQL Server 엔진만 제어할 수 있습니다. | 성능 비용이 낮습니다. 최대 동시성을 허용하고 최대 성능을 제공하기 위해 래치는 논리 트랜잭션 기간 동안 유지되는 잠금과 달리 메모리 내 구조에 대한 실제 작업 기간 동안만 유지됩니다. |
Lock | 트랜잭션 일관성을 보장합니다. | 사용자가 제어할 수 있습니다. | 잠금은 트랜잭션 기간 동안 유지해야 하므로 래치에 비해 성능 비용이 높습니다. |
즉.. 프로그램 상 Transaction 처리로 인한 Lock 이 발생한 경우인지, 아니면 그 이외 내부 작업인지에 따라 나뉜다고 이해하면 될 것 같다.
반응형
반응형
'MS SQL Server (MSSQL)' 카테고리의 다른 글
재귀 쿼리로 조직 구조 조회하기 (WITH 사용, Recursive Query) (0) | 2024.07.12 |
---|---|
CTE (WITH 문)과 TEMP 테이블 비교 (0) | 2024.07.10 |
MySQL과 SQL Server 의 SQL 문 차이 정리 (2) | 2024.07.05 |
Procedure History 남기는 방법 (0) | 2024.07.04 |
T-SQL을 사용하여 쉼표 또는 기타 구분 기호를 SQL Server의 테이블 또는 목록으로 변환 (0) | 2021.03.10 |