was 에서 insert시 작업 부하가 작은 경우는 어디일까요? 0 3 2,010

by 이기락 [Oracle Tuning] insert 커서 웹로직 프로시저 [2019.11.26 10:46:35]


was에서 (웹로직) 특정 작업이 끝나면 후 작업으로

같은 테이블에

30만건 정도를 insert하는데요

한사람이 아니라 여러명이 동시 작업으로 합니다

그래서 건수는 얼마 안되지만 고민이 되는것인데요

1. " insert 테이블1 (a,b,c) select a,b,c from 테이블2 "

하는것과

2. 커서를 선언하고 5천건씩  패치해서

insert하는 어레이 프로세싱 방식의  (bulk limit)

프로시저를 만들어

호출 하는방식

둘중에 어느것이  테이블 락이나 오라클 부하에 좋을까요?

참고로 트렌젝션 땜시 커밋은 성공했을때 단한번 해야 합니다

고수님들 답변 부탁드립니다

왜그런지 간략하게 설명도 좀 부탁 드립니다

by 부쉬맨 [2019.11.26 12:23:42]

 

2번은 bulk라서 데이터 중첩에 이나 머라고햇지? 정합성에 대해서 보장못한다 정도로 알고있습니다.

2번의 경우 사용자들이 insert한 데이터를 temp성 테이블에 넣고 그 대상 데이터를 bulk로 푸는 방식이 좋아보임

1번경우에는 몇건을 select 해서 하는지모르겟지만 한방에 select insert하는경우는 1번 추천

아니면 2번추천

 

 


by 대궁이 [2019.11.29 15:42:24]

순수 데이터 입력을 하는것이고

30만건정도를 병렬도 다수의 사용자가 INSERT를 한다면 1번의 경우에도 큰 문제는 없을 것으로 보입니다만

실제 30만건정도라면 SELECT 의 SQL조회시간이 단시간이라면 순차적으로 해도 될듯합니다.

이건 상황에 따라 판단하시면 될듯 합니다.

 


by 이기락 [2019.11.30 07:19:49]

실제 운영에서는 1번 작업으로 하고 있는데요.

----------------------------------------

쿼리1개를 돌려 봤을때
SELECT 조회만 하는 시간 :30초
INSERT 하는 시간 : 1분

----------------------------------------

SELECT문이 XML TABLE을 사용하는것이라 CPU COST 가 굉장히 높고요. 

XML파싱을 할때 한명이 작업할땐 별거 아닌데 여러명이 동시 작업하면 

부하가 많이 가는것으로 보입니다.(건수가 많을땐 그냥 멍하게 있습니다)

 

5명이 동시 작업하면 10분이 넘게 걸립니다.

웹에서 10분 타임아웃이라....난감한 상황 이고요...

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입