Everything counts - 라키의 IT 블로그

[DB] 오라클 사용자 정의 함수 조회, 사용 이유 본문

프로그래밍/DB

[DB] 오라클 사용자 정의 함수 조회, 사용 이유

벡스파 2022. 2. 11. 14:48

에브리데이 코드를 보다가 단골점포 설정하는 부분에서 내 위치에 가장 가까운 점포들이 뜨게 하는 부분을 맵으로 표시할 수 있을까 하고 고민해보았다. 그러면서 알게 된 부분이 현재 위치를 알기 위해 웹 window 객체의 navigator객체를 사용했다는 것, 그리고 그 수치로 Oracle function 에서 연산하여 가까운 위치의 점포를 조회해오고 있다는 것이다. 그 중 연산에 대해 이해하고 왜 사용하는지를 알고 싶어 사용자 정의 함수에 대해 공부해보았다.

 

 

우선 사용자 정의 함수 내용을 조회하는 방법은

 

SELECT *

 FROM all_source

WHERE name = '함수이름';

 

해서 내용을 조회 해보니 엄청난 연산수식이 들어있다. 그런데 이런 연산을 굳이 사용자 정의 함수로 만든 이유가 궁금했다.

 

* Oracle 사용자정의 함수 이용 주의점

함수와 프로시저가 너무 많으면 라이브러리 캐시에서 관리할 오브젝트 개수와 크기가 증가해 효율성이 저하된다. 꼭 필요한 경우만 사용. SQL수행이 많이 필요한 작업은 오라클 함수/프로시저를 이용하도록, 연산 위주의 작업은 앱서버단에서 처리하도록 설계하면 좋다. 

 

이런 원리로 따져봤을 때 가까운 거리의 점포를 구하는건 사용자 정의 함수보다 앱 내에서 연산하여 구하는게 더 효율적이고 빠를 것 같다는 결론이 나왔다. 그런데 SQL 데이터를 이용한 게 아닌 단순 수식 연산도 더 성능에 좋지않은지는 조금 더 공부해봐야 알 것 같다.

 

 

 

- 참고 '오라클 성능 고도화 원리와 해법'