[MSSQL] With (Nolock)을 사용하는 이유
딥상어동의 딥한 SQL/LV2.중급쿼리2021. 3. 27. 19:54[MSSQL] With (Nolock)을 사용하는 이유

데이터베이스의 데이터프레임을 "테이블"이라고 합니다. 테이블의 데이터를 업데이트 하는 경우, 기본적으로 해당 테이블은 잠겨있게 됩니다. 이러한 상태를 Lock이라고 하는데요. Lock이 걸리는 이유는 MSSQL의 기본 격리수준이 Read Committed 이기 때문입니다. 즉, 완전히 commit이 된 데이터만 읽으라는 뜻입니다. 따라서, lock이 걸려있는 동안 테이블 조회(select)를 진행하게 되면, select 작업이 후순위로 밀리고 db의 성능이 떨어질 수 있습니다. 특히, "데드락(dead lock)"이라고해서 아예 lock이 풀려버릴 수도 있습니다. 데드락은 락이 풀리는것이 아니라 교착상태로 서로의 락이 풀리길 무한정 기다리면서, 오히려 락이 계속 풀리지 못하는 상태입니다. (흠님 댓글 감..

image