[ 목차 ]
728x90
반응형
[ 서론 ]
이전 다양한sql 을 사용하여 대량 테스트를 해야하는 경우가 있어 정리를 하게 되었다. mysql, oracle, mssql, postgres 등 테스트 해보았고 여기서는 ORACLE 을 정리하였다.
Oracle PL/SQL을 사용하여 작성된 프로시저이다. 이 코드는 메시지 큐 테이블에 대량의 데이터를 삽입하는 작업을 수행하는데 사용된다.
PL/SQL은 Oracle 데이터베이스에서 사용되는 절차적 프로그래밍 언어로, SQL 문을 확장하여 프로시저, 트리거, 함수 등을 지원한다.
[ 코드 ]
DECLARE
var_i NUMBER := 1;
var_j NUMBER := 1;
var_phone VARCHAR2(20);
arg_count NUMBER :=100000; -- 반복 횟수를 지정한다!!!
rtn_inscnt NUMBER;
arg_type VARCHAR2(20) := 'S'; -- 선택 유형을 선택!!!
BEGIN
-- Oracle에서는 트랜잭션을 명시적으로 시작할 필요가 없습니다.
WHILE var_i <= arg_count LOOP
var_phone := TO_CHAR(var_j);
var_phone := LPAD(var_phone, 4, '0'); -- 전화번호 4자리 만들기!!!
var_phone := '0106379' || var_phone; -- 전화번호 연결하기 !!!
IF (arg_type = 'S') THEN
INSERT INTO msg_queue_v20hs(mseq, msg_type, dstaddr, callback, request_time, text)
VALUES (msg_queue_v20hs_seq.nextval, arg_type, var_phone, '----------', sysdate, 'SMS 테스트입니다. 감사합니다.');
ELSIF (arg_type = 'L') THEN
INSERT INTO msg_queue_v20hs(mseq, msg_type, dstaddr, callback, request_time, subject, text)
VALUES (msg_queue_v20hs_seq.nextval, 'M', var_phone, '-------', sysdate, 'LMS 제목 입니다.',
'LMS 내용입니다.');
ELSIF (arg_type = 'M') THEN
INSERT INTO msg_queue_v20hs(mseq, msg_type, dstaddr, callback, request_time, subject, text, filecnt, fileloc1)
VALUES (msg_queue_v20hs_seq.nextval, arg_type, var_phone, '--------', sysdate, 'MMS 제목 입니다.',
'MMS 내용입니다.',
1, '/home/hssong/hssong2000/mmsfile/galaxy.jpg');
ELSE
INSERT INTO msg_queue_v20hs(mseq, MSG_TYPE, DSTADDR, CALLBACK, SUBJECT, TEXT, REQUEST_TIME, JSON_DATA1, JSON_DATA2)
VALUES (msg_queue_v20hs_seq.nextval, arg_type, var_phone, '----------', '제목입니다. 감사합니다.', '대체발송 내용입니다. 감사합니다.', sysdate,
.........[JSON 내용 생략] .....
}]
}]
}
}');
END IF;
IF MOD(var_i , 5000) = 0 THEN
COMMIT;
END IF;
var_i := var_i + 1;
var_j := var_j + 1;
END LOOP;
COMMIT;
rtn_inscnt := var_i - 1;
END;
/
[ 설명 ]
arg_count NUMBER :=100000; -- 반복 횟수를 지정한다!!!
: 내가 얼마나 많은 데이터를 실핼할지 반복 횟수를 설정하는 부분이다. 원하는 만큼 수를 변경 할 수 있다.
arg_type VARCHAR2(20) := 'S'; -- 선택 유형을 선택!!!
: IF ELSE 문을 사용하여 원하는 쿼리를 변경하기 위해 만든 부분이다.
WHILE var_i <= arg_count LOOP
: var_i가 arg_count보다 작거나 같을 때까지 반복하는 부분이다.
[ 대량 테스트 후 초당 속도 확인하기 ]
https://hunseop2772.tistory.com/325
반응형
'업무 기록 > ETC' 카테고리의 다른 글
Vscode -VSLX 오프라인 설치, 내부망 NextJs 설치 실행, .npmrc 변경, 확장파일 위치 (2) | 2024.03.29 |
---|---|
문자수신(MO) 서비스와 통화 Asterisk 란 (0) | 2024.03.27 |
리눅스 1초마다 실행 된 반복된 횟수 찾기(더하기) (0) | 2024.01.04 |
tomcat서버 설치(jdk, loglotate, FirewallD..) (0) | 2023.12.13 |
vi, vim 편집기 명령어 [Linux] (1) | 2023.12.12 |