Select 를 할 때 SQL서버는 Select 를 하는 그 순간에만 공유 잠금(Shared Lock)을 건다.
그런데 이 공유 잠금은 Insert, Update, Delete 가 수행될 때 걸리는 베타적 자금(Exclusive Lock)과 함께 걸릴 수는 없다.
따라서 Select 를 하는 동안에는 공유 잠금이 걸린 곳에 대해 Insert, Update, Delete가 발생할 수 없기 때문에
질의 결과를 지연시키고 웹 언어(asp.net, asp)의 성능 저하를 가지고 오게 된다.
(noLock) 힌트를 사용하면 Select 를 하는 동안 선택된 레코드가 그 순간에 다른 Sql문에 변경될 수 있다.
이런 경우를 막기 위해 공유 잠금을 거는 것이다.
그런데 이 공유 잠금은 Insert, Update, Delete 가 수행될 때 걸리는 베타적 자금(Exclusive Lock)과 함께 걸릴 수는 없다.
따라서 Select 를 하는 동안에는 공유 잠금이 걸린 곳에 대해 Insert, Update, Delete가 발생할 수 없기 때문에
질의 결과를 지연시키고 웹 언어(asp.net, asp)의 성능 저하를 가지고 오게 된다.
(noLock) 힌트를 사용하면 Select 를 하는 동안 선택된 레코드가 그 순간에 다른 Sql문에 변경될 수 있다.
이런 경우를 막기 위해 공유 잠금을 거는 것이다.
'MS-SQL' 카테고리의 다른 글
[MS-SQL] 사용자 정의 정렬 (0) | 2012.06.20 |
---|---|
[MS-SQL] 배열이용 (0) | 2012.03.13 |
[MS-SQL] LDF 로그파일 정리 (0) | 2012.01.12 |
[MS-SQL] 문자열 함수 (0) | 2011.11.23 |
[MS-SQL] CONVERT 결과값 (0) | 2011.11.08 |