2009-11-16 3 views
3

트리거가 성능을 향상 시키거나 방해 할 수있는 조건은 무엇입니까? 언제 사용하고 시스템에서 트리거를 사용하지 않을 것인가?오라클의 트리거

트리거를 사용하여 복잡한 제약 조건을 적용하는 방법은 무엇입니까?

답변

7

트리거를 실행하면 항상 오버 헤드가 발생합니다. 최소한 트리거를 실행시키는 모든 행에 대해 SQL 엔진에서 PL/SQL 엔진으로 컨텍스트를 이동하고 있습니다. 트리거를 실행하는 오버 헤드의 절대 크기는 비교적 일정하지만, DML을 수행하는 방법에 따라 오버 헤드 비율은 매우 가변적입니다. 관계형 데이터를 가장 빠르게 조작하는 행 집합을 추가 또는 수정하는 응용 프로그램이있는 경우 트리거는 컨텍스트 이동 비용에 트리거가 실제로 발생하는 비용을 더한 것이므로 성능에 상대적으로 큰 영향을줍니다 DML을 트리거하는 비용을 신속하게 압도합니다.

이론적으로 트리거는 복잡한 제약 조건을 적용하는 데 사용할 수 있습니다. 트리거는 다른 테이블을 쿼리하거나 복잡한 비교를 수행하는 함수를 호출 할 수 있기 때문입니다. 그러나 실제로는 다중 사용자 환경에서 이러한 트리거를 실제로 코딩하는 것은 불가능하지는 않더라도 대단히 어렵습니다. 따라서 일반적으로 데이터를 보는 제약 조건을 필요로하는 시스템을 설계하는 것은 좋지 않습니다 테이블. 이는 일반적으로 데이터 모델에 문제가 있음을 나타냅니다.