개요
주기적으로 혹은 어쩌다가 한번씩 대량의 데이터를 입력하거나 수정해야 할 때가 있다.
하지만 실제로 서비스 중인 데이터베이스 서버에 대량의 값을 넣으려면
다량의 I/O 작업으로 인해 과부하가 발생되어 데이터베이스의 성능이 저하되므로 함부로 작업을 수행하기는 어렵다.
이럴 때, 가능한한 서비스 사용자의 이용이 적은 시간대에 스케줄러를 이용하여
대량의 데이터를 삽입하는 작업을 하면 서비스의 품질 불량을 최소화할 수 있다.
오늘은 스케줄러를 이용하여 일정을 정하고,
정해진 일정에 입력된 작업을 데이터베이스에 수행되도록 하는 방법에 대해 알아본다.
참고 글
스케줄러 생성에 관련하여 참고될만한 글 목록이다.
자신의 상황과 같은 현상이 일어난다면 확인해보자.
SQL Server Agent 가 없거나 중지 상태 일 경우 해결 방법
SQL Server Agent을 설정하려고 하는데 SQL Server 구성 관리자가 없을 경우 해결 방법
스케줄러 생성하기
스케줄러 설정하기 - 기본 설정
New Job - General (새 작업 - 일반)
- Name(이름) : test
- Category(범주) : 테스트이므로 따로 지정하지 않음
스케줄러 설정하기 - 수행할 작업 설정
New Job - Steps (새 작업 - 단계)
- New(새로 만들기)
New Job - Steps - New Job Step (새 작업 - 단계 - 새 작업 단계)
- Step name(단계 이름) : 사용자가 식별이 가능한 이름 정의
- Database(데이터베이스) : 사용할 데이터베이스
- Command(명령) : 데이터베이스 내에서 실행할 쿼리 내용
- 포스팅에서는 테스트 테이블에 값 하나를 추가하는 내용의 스케줄러를 작성하였음.
-- 예시 작성 쿼리
insert into t1 (col1, col2)
values (val1, val2)
스케줄러 설정하기 - 작업을 수행할 시간 및 빈도 설정
New Job - Schedules (새 작업 - 일정)
- New(새로 만들기)
New Job - Schedules - New Job Schedule (새 작업 - 일정 - 새 작업 일정)
- Name(이름) : 사용자가 식별 가능한 작업 일정 이름 정의
- Schedule type(일정 유형)
- Start automatically when SQL Server Agent starts (SQL Server 에이전트가 시작될 때 자동으로 시작)
- 서버 재부팅 후 초기화 작업을 수행할 때 사용 (예: 로그 파일 초기화)
- 서버 중단 및 재개를 할 때 필요한 작업을 자동으로 실행하도록 할 때 사용 (예: 시스템 상태 점검)
- Start whenever the CPUs become idle (CPU가 유휴 상태로 될 때마다 시작)
- 서버의 CPU 사용률이 낮아져 유휴 상태가 될 때 작업 실행
- 유휴 상태를 감지하여 시스템 성능에 미치는 영향을 최소화하기 위해 리소스 집약적인 작업을 수행할 때 사용 (예: 인덱스 재구성)
- 정기적인 유지보수 작업이나 백업 작업을 CPU가 유휴 상태일 때 실행하여 사용자가 활동 중인 시간대에도 영향을 주지 않도록 하기 위해 사용 (예: 데이터 백업)
- Recuring (되풀이)
- 해당 옵션 선택 시 Frequency(빈도)에서 일정을 시작할 날짜를 지정해야 함
- One time(한 번)
- 해당 옵션 선택 시 One-time occurrence(한 번 발생)에서 일정을 시작할 날짜를 지정해야 함
- 포스팅에서는 한 번 실행으로 설정하고, 1분 뒤에 값이 추가되도록 설정하였음.
- Start automatically when SQL Server Agent starts (SQL Server 에이전트가 시작될 때 자동으로 시작)
OK 버튼을 눌러 스케줄러를 생성해 보자.
스케줄러 확인하기
아래의 경로에서 생성한 스케줄러를 확인해 볼 수 있다.
- Object Exploer (개체 탐색기)
- SQL Server Agent (SQL Server 에이전트)
- Jobs (일정)
- 생성한 스케줄러 확인
- Jobs (일정)
- SQL Server Agent (SQL Server 에이전트)
스케줄러 일정 작동 확인 테스트
테스트용 테이블에 '고은별', '인천'이라는 값을 추가되었는지 확인해 보자.
스케줄러 설정 시 일정에서 1분 뒤에 추가되도록 하였으니,
1분 뒤에는 값이 추가되어야 한다.
- 초기 테스트 테이블의 값
- 1분 뒤 스케줄러가 실행되어 작업을 수행한 테스트 테이블의 값
- 스케줄러의 일정에 맞게 설정한 작업이 정상적으로 실행되어 값이 추가됨을 확인할 수 있다.