티스토리 뷰
MS-SQL WITH (NOLOCK) 에 대해 알아보겠습니다.
MS-SQL에서 SELECT 시에 WITH (NOLOCK) 을 주면 공유잠금을 걸지 않고 바로 조회를 합니다.
MS-SQL은 기본적으로 SELECT 시에 공유잠금이 걸립니다. 즉, SELECT 문이 수행되는 테이블에 대해서 INSERT, UPDATE, DELETE 문이 수행되고 있다면 SELECT문은 선행 작업이 모두 끝날때까지 LOCK이 걸립니다. 이때 SELECT 문에 WITH (NOLOCK)을 추가하면 선행작업의 결과와 관계없이 바로 SELECT문이 수행되어서 결과를 반환하게 됩니다.
ex)
BEGIN TRAN
UPDATE Table SET Column = '' WHERE ....
-- ROLLBACK or COMMIT
SELECT * FROM TABLE1 : 실행 안됨
SELECT * FROM TABLE1 WITH (NOLOCK) : ROLLBACK or COMMIT 상관없이 실행됨
SELECT 문장에서 여러 테이블을 조인해서 가져오는 경우 WITH (NOLOCK)을 사용하기 위해서는 모든 테이블에 적어주어야 합니다.
프로시저 내에서 사용되는 SELECT 문에서 WITH (NOLOCK)을 사용하기 위해서는 각 문장마다 삽입할 필요없이 프로시저 시작 부분에 다음 문장을 추가해 주면 됩니다.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
ex)
CREATE PROCEDURE 프로시저명
AS
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;
BEGIN
...
END
※ 더 많이 알고 싶다면 참고할만한 곳
https://www.mssqltips.com/sqlservertip/2470/understanding-the-sql-server-nolock-hint/
WITH (NOLOCK)을 적절하게 사용해서 부하가 적어지는 프로그램을 만드시길 기원하겠습니다.
'MS-SQL Server > Query' 카테고리의 다른 글
MSSQL 테이블 용량, 건수 확인 쿼리 (0) | 2022.05.26 |
---|---|
MSSQL IF EXISTS 사용해 테이블 데이터 유무 확인하기 (0) | 2021.04.06 |
MSSQL 트리거 비활성화/활성화 쿼리 (0) | 2021.01.14 |
MSSQL 테이블 컬럼 추가, 수정, 삭제 쿼리 (0) | 2020.07.19 |
MSSQL 자동 증가값(IDENTITY) 설정 방법 (6) | 2019.12.01 |
MSSQL 공백제거 함수 - LTRIM, RTRIM (0) | 2019.04.15 |
MS-SQL 날짜 관련 함수 정리 - CONVERT, DATEDIFF (0) | 2014.07.03 |
- Total
- Today
- Yesterday
- ASP.NET
- toFixed
- 로마
- 비스페놀A
- 근위병교대식
- javascript
- jquery
- 인코딩
- html
- 환경호르몬
- Roma
- 템즈강
- 태풍
- MS-SQL
- URL
- 영국
- london
- mssql
- 이순신
- 런던
- 자바스크립트
- favicon
- USB
- 한글깨짐
- DATEDIFF
- 플라스틱
- ASP
- 고성
- iframe
- 체크박스
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |