database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 41177 게시물 읽기
No. 41177
Procedure 에서 있으면 UPDATE, 없으면 INSERT 구현 시
작성자
박소연(soyoun95)
작성일
2016-06-17 15:47ⓒ
2016-06-17 15:48ⓜ
조회수
8,062

안녕하세요 

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 사용을 하고 있습니다.

고수님들의 소중한 의견 부탁 드립니다.

감사합니다.

이 글에 대한 댓글이 총 1건 있습니다.

Merge statement 를 사용해 보세요.

 

http://psoug.org/reference/merge.html

고서진(longflat)님이 2016-06-20 10:20에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
41180특정문자(대,소) 문자열만 자르기 [1]
김주환
2016-06-21
7530
41179user object type 에서 한글깨짐 문의드립니다.
진랑
2016-06-20
7660
41178테이블 다중 컬럼 join [2]
염진호
2016-06-17
7723
41177Procedure 에서 있으면 UPDATE, 없으면 INSERT 구현 시 [1]
박소연
2016-06-17
8062
41176안녕하세요. 문자 보내는 테이블 컬럼값에 시간을 넣는 부분에 관해서 문의드려요 [2]
도토리
2016-06-16
7759
41175데이터 타입 문제 [1]
도와주세요
2016-06-16
8011
41174부모키가 없다고하고 기본키가 두개일경우
이기쁨
2016-06-14
7505
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.049초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다