안녕하세요
1일 평균 30만 ~ 40만건에 대해서 실시간으로 누적 데이터 마감 시 있으면 update, 없으면 insert 구문 프로시저에서 작성 시 하기 3가지 방식의 성능이 궁금하여 문의 합니다.
1) select 후 결과에 따른 insert 또는 update
select x into v_x from table;
if v_x > 0 then update else insert
2) SQL%NOTFOUND 사용
update ...set ... if sql%notfound then insert into ...
3) NO_DATA_FOUND 사용
BEGIN
SELECT 1 INTO ... FROM ... UPDATE ... SET = ...
EXCEPTION
WHEN NO_DATA_FOUND THEN
INSERT INTO ...
end;
참고로, Mysql 에서는 1)번 방식은 CPU 부하를 발생 합니다. 빈번한 select 문이 cpu 사용율을 높이게 합니다.
이에 insert into .... ON DUPLICATE KEY update 사용을 하고 있습니다.
고수님들의 소중한 의견 부탁 드립니다.
감사합니다. |