독립형 프로 시저 및 기능에 비해 패키지의 장점은 무엇입니까?


13

독립형 프로 시저 및 기능보다 Oracle 데이터베이스에서 패키지를 선호해야하는 이유에 대한 표준 답변을 찾고 있습니다.

답변:


12

패키지의 장점

논리적 그룹화 – 함께 작동하는 방법은 논리적으로 결합 된 것이 아니라 물리적으로 분리되지 않고 응집력있는 단위로 넣을 수 있습니다.

안전한 개인 방법 -기능과 절차는 패키지에 개인으로 만 사용할 수 있으며 패키지 내에서만 사용할 수 있습니다. 이를 통해 공개 표면이 더 간단하고 안전 해집니다.

권한 관리 – 필요한 각 프로 시저 / 기능에 대해 별도로 작업하지 않고 함께 작동하는 프로 시저 그룹에 대해 권한을 한 번 부여 할 수 있습니다.

안전한 포장 -포장 된 포장은 포장 된 기능 / 절차보다 포장을 풀기가 더 어렵습니다.

간소화 된 이름 지정 – 네임 스페이스가 클수록 이름이 더 단순하고 다른 패키지에서 재사용 할 수 있습니다.

더 나은 성능 – 패키지를 컴파일 할 수 있으며 다른 방법과 같이 단편적인 것이 아니라 전체적으로 메모리에로드됩니다. 이 혜택이 존재하는 경우 다른 혜택에 비해이 혜택이 최소화됩니다.

무효화 감소 – 패키지 본문을 변경해도 함수 나 프로 시저를 변경해도 종속성이 무효화되지 않습니다.

고유 기능 -패키지 변수, 패키지 상수, 초기화, 세션 상태, 패키지 주석 및 오버로드 된 메소드.

참조 :
11.2 개념 안내서
Tom에게 질문하기
StackOverflow.com 패키지 성능 풀기 PL / SQL 프리젠 테이션 에 대한 질문
(pdf)


2
성능상의 이점에 동의하지 않아야합니다. 메모리에 코드를로드하는 것이 상당한 대기 이벤트 인 경우 매우 나쁜 일이 발생했습니다. 또한 단일 방법 만 필요할 때 전체 패키지를로드 할 때 더 많은 코드를 읽어야하므로 패키지가 성능을 저하시킬 가능성이 높습니다. 그러나 두 경우 모두 성능 차이를 측정 할 수는 없습니다.
저스틴 동굴

@Justin-그 요점은 11.2 개념 안내서에 있습니다. "더 나은 성능-패키지의 프로 시저가 처음으로 호출 될 때 전체 패키지가 작은 청크로 메모리에로드됩니다.이로드는 독립형에 필요한 별도의로드와 달리 한 번의 작업으로 완료됩니다. 관련 패키지 된 프로 시저에 대한 호출이 발생하면 컴파일 된 코드를 메모리에서 실행하는 데 디스크 I / O가 필요하지 않습니다. "
레이 리펠

4
설명서에 성능상의 이점이 있다고 주장합니다. 설명서가 잘못되었거나 최소한 부족합니다. 가장 좋은 경우, "혜택"의 규모는 아주 작습니다. 그리고 이익의 표시는 알려져 있지 않습니다. 대부분의 행을 읽는 경우 테이블 스캔이 더 효율적이고 단일 행을 읽는 경우 인덱스 액세스가 더 효율적인 것처럼 전체 패키지를 한 번에 메모리로 읽는 것이 유용합니다. 한 가지 방법 만 원한다면 모든 방법을 사용하고 불리한 점을 사용하십시오.
저스틴 동굴

1
@Justin-귀하의 평가는 논리적으로 들립니다. 나는 어떤 방법 으로든 확실한 것을 찾지 못했기 때문에 대답의 요점에주의를 기울였습니다. 입력 해 주셔서 감사합니다.
레이 리펠

이 성능 이점은 캐싱과 유사하다고 생각합니다. 해당 절차 만 사용하고 자주 사용하지 않으면 성능상의 이점이 없습니다. 그러나 자주 사용하고이 패키지에 다른 절차를 사용하면 이점이 있습니다. 실제 성능은 아니지만 인식 된 성능이 향상되어 개발자가 캐싱을 사용하고 있습니다. 관련 프로 시저가 동일한 패키지에 배치되기 때문에 다른 프로시 저도 호출되는 것이 논리적입니다. 이것은 동일한 패키지에서 두 개의 프로 시저를 호출 할 가능성에 관한 것입니다. 그리고 일반적으로 높은 확률로 읽으면 발생합니다.
Atilla Ozgur
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.