수백만건의 쿼리를 돌릴때,

부하를 막기 위해서 쿼리의 텀을 주는 경우가 있다.

사실 나는 Job을 걸어둬서 매 시간마다 돌릴려고 했었다. SQL에서도 다른 프로그래밍처럼 잠시 멈췄다 다시 실행시킬 수 있는 명령어가 있어서 테스트 예제를 만들어서 정리해본다.

 

1
2
3
4
5
6
7
8
9
10
11
DECLARE @COUNT INT,
        @MAX   INT;
 
SET @COUNT = 1;
SET @MAX   = 10;
 
WHILE (@COUNT < @MAX) BEGIN
    SELECT GETDATE();
    WAITFOR DELAY '0:0:1'
    SET @COUNT = @COUNT + 1;
END
cs

 

코드는 어떤 코드보다 깔끔하고 이해하기 쉽다.

1부터 10까지 증가하는 코드이고, 그때마다 현재 시간을 찍어주는 SQL 코드이다.

WAITFOR DELAY 라는 명령어를 사용하면 되고 초단위로 설정해주면 된다. (최대 24시간까지 된다.)

 

 

우리가 원하는 결과처럼 1초마다 실행되어, 현재 시간을 찍어주고 있다.

간단하면서도 처음알게된 기능이다. 수백만건의 데이터를 insert 할때, 지속적으로 데이터를 insert하면 테이블 락이 걸리니, 이럴때 부하를 줄이고 테이블 락 발생을 없애기 위해서 해당 명령어를 사용하면 좋을거 같다.

+ Recent posts