집계용 데이터 생성시 루프문에 함수사용 0 5 407

by 미친감자 [2022.01.13 17:23:10]


안녕하세요

집계용 데이터를 프로시저로 생성하는데요

루프를 돌면서 테이블에 INSERT를 합니다

1000개 마다 COMMIT을 하구요

여기서 질문이 있는데요

1. 동일한 INSERT 구문이 반복적으로 4,5회 이상나오다보니 코드 가독성이 떨어져서 FUNCTION 을 따로 만들어 처리하려고 했는데요

루프문에 FUNCTION을 사용할 경우 성능을 떨어뜨린다고 해서 사용하지 않았습니다.

루프문에서의 FUNCTION 사용이 성능 저하에 많은 영향을 미치는지요?

 

2. A프로시저에서 B함수를 호출해서 INSERT할 경우 동일 세션으로 인식이 되는지 궁금합니다.

INSERT 한 데이터를 조회해서 작업하는 부분이 있어서 같은 패키지에 있는 요소가 아닌

각각의 프로시저, 함수인데,

프로시저에서 함수를 호출해도 같은 세션으로 인식되는지 알고 싶습니다.

 

감사합니다 

 

by 축구쟁이 [2022.01.13 18:14:21]

1. FUNCTION 반복 사용으로 인한 성능 저하는 FUNCTION 호출 횟수가 얼마나 되는지에 따라 결정됩니다.

FUNCTION을 반복 호출하여 발생하는 추가적인 실행시간이 전체 실행시간 대비 얼마나 차지하는지를 보고 판단해야 합니다.

예를 들면 전체 작업시간이 1시간 걸리는 배치인데 FUNCTION을 사용하지 않았을때보다 사용했을때 작업시간이 1분 추가된다고 해서 성능이 저하되었다고 얘기하긴 힘듭니다.

 

2. SQL Server 기준으로 같은 세션으로 작업이 진행됩니다.


by 미친감자 [2022.01.14 08:56:17]

답변감사합니다

집계용 데이터 생성이라

루프가 만번정도 돌고 그때마다 insert하는 거라 아무래도 function 호출은 지양해야 할 것 같아요 ^^


by 마농 [2022.01.14 08:44:49]

1. 자체 작업보다는 콜을 하는 작업이 부담이 되긴 하죠.
2. 반복되는 코드로 인해 가독성이 떨어진다면?
 - 반복을 줄이고 간결하게 만들어 가독성을 높혀야죠.


by 미친감자 [2022.01.14 08:57:05]

답변 감사합니다

일년정도만 사용할 배치라, 가독성보다 속도에 초점을 맞추게 되어서 가급적 부담을 더는 방향으로 가기로 했어요

늘 좋은 정보 감사드립니다 ^^


by 마농 [2022.01.14 09:25:40]

1. 제가 언급한 가독성을 높인다는 의미는.
- 쿼리를 간결하게 개선하라는 의미입니다.
- 함수를 사용하라는 의미가 아닙니다.
2. 대부분의 경우
- 쿼리가 복잡할 수록 성능도 떨어집니다.
- 쿼리가 간결할 수록 성능도 좋아집니다.

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