범퍼카 토토 9.3.25 문서화 | ||||
---|---|---|---|---|
PostgreSQL : 문서 : 9.3 : 와이즈 토토 및 명령 상태 | PostgreSQL : 문서 : 9.3 : 사설 토토 시스템 | 38 장. 범퍼카 토토 체계 | 윈 토토 : 문서 : 9.3 : 절차 언어 |
트리거를 사용하여 수행 할 수있는 많은 것들도 를 사용하여 구현범퍼카 토토범퍼카 토토 시스템. 범퍼카 토토으로 구현할 수없는 것 중 하나 어떤 종류의 제약, 특히 외국 키입니다. 그것은 명령을 다시 작성하는 자격을 갖춘 범퍼카 토토을 배치 할 수 있습니다아무것도열의 값이없는 경우 다른 테이블에 나타납니다. 그러나 데이터는 조용히 버려집니다 그리고 그것은 좋은 생각이 아닙니다. 유효한 값에 대한 검사가있는 경우 필수 및 잘못된 값의 경우 오류 메시지가 필요합니다. 생성해야합니다. 방아쇠에 의해 수행되어야합니다.
이 장에서는 범퍼카 토토을 사용하여보기를 업데이트하는 데 중점을 두었습니다. 모두 이 장의 업데이트 범퍼카 토토 예제 중에서도 구현할 수도 있습니다. 사용대신보기를 트리거합니다. 그러한 트리거를 작성하는 것은 종종 범퍼카 토토을 작성하는 것보다 쉽습니다. 특히 복잡한 논리가 필요한 경우 업데이트.
두 가지 모두에서 구현할 수있는 것들에 대해서는 최고입니다. 데이터베이스 사용에 따라 다릅니다. 방아쇠가 한 번 발사됩니다 영향을받는 각 행. 규칙은 쿼리를 수정하거나 an을 생성합니다 추가 쿼리. 따라서 많은 행이 한 명령에 영향을 미치면 추가 명령 하나를 발행하는 규칙은 모든 행에 호출되는 트리거 및 재정비해야합니다. 여러 번해야 할 일. 그러나 트리거 접근법은 다음과 같습니다 규칙 접근 방식보다 개념적으로 훨씬 간단하며 제대로 할 초보자.
여기서 우리는 범퍼카 토토의 선택과 트리거는 한 상황에서 재생됩니다. 두 개의 테이블이 있습니다 :
테이블 컴퓨터 생성 ( 호스트 이름 텍스트 - 색인 제조업체 텍스트 - 색인 ); 테이블 소프트웨어 생성 ( 소프트웨어 텍스트 - 색인 hostname 텍스트 - 인덱스 );
두 테이블 모두 수천 개의 행이 있고 인덱스는hostname고유합니다. 범퍼카 토토 또는 트리거는 행을 삭제하는 제약 조건을 구현해야합니다.소프트웨어삭제 된 참조 컴퓨터. 방아쇠는이 명령을 사용합니다.
hostname = $ 1; 소프트웨어에서 삭제
트리거가 삭제 된 각 개별 행마다 트리거가 호출되므로컴퓨터, 계획을 준비하고 저장할 수 있습니다 이 명령을 위해 전달hostname매개 변수의 값. 규칙은 다음과 같이 작성됩니다.
컴퓨터로 삭제에서 Computer_del을 작성하십시오 HostName = Old.HostName; 인 소프트웨어에서 삭제하십시오.
이제 우리는 다른 유형의 삭제를 살펴 봅니다. A :의 경우
hostName = 'mypc.local.net'; computer에서 삭제
테이블컴퓨터인덱스에 의해 스캔됩니다 (빠른), 트리거가 발행 한 명령도 인덱스 스캔 (빠른). 범퍼카 토토의 추가 명령 BE:
Computer.HostName = 'mypc.local.net'소프트웨어에서 삭제 및 Software.HostName = Computer.HostName;
적절한 인덱스 설정이 있으므로 플래너는 그렇습니다 계획 만들기
NestLoop - 컴퓨터에서 comp_hostidx를 사용한 색인 스캔 - 소프트웨어에서 soft_hostidx를 사용한 색인 스캔
그래서 속도에는 그다지 큰 차이가 없을 것입니다. 트리거 및 범퍼카 토토 구현.
다음 삭제와 함께 우리는 2000 년을 모두 제거하고 싶습니다. 컴퓨터hostname시작 와 함께old. 가능한 두 가지 명령이 있습니다 그렇게하려면. 하나는 :
hostName = 'old'인 컴퓨터에서 삭제 및 hostname < 'olo'
규칙에 의해 추가 된 명령은 다음과 같습니다.
Computer.HostName = 'Old'및 Computer.HostName < '올레'소프트웨어에서 삭제 및 Software.HostName = Computer.HostName;
계획과 함께
해시 조인 - 소프트웨어에서 SEQ 스캔 - 해시 - 컴퓨터에서 comp_hostidx를 사용한 색인 스캔
다른 가능한 명령은 다음과 같습니다.
호스트 이름 ~ '^Old';의 컴퓨터에서 삭제
명령에 대한 다음 실행 계획을 초래합니다. 규칙에 따라 추가 :
NestLoop - 컴퓨터에서 comp_hostidx를 사용한 색인 스캔 - 소프트웨어에서 soft_hostidx를 사용한 색인 스캔
이것은 플래너가 자격hostnamein컴퓨터인덱스에도 사용될 수도 있습니다 스캔소프트웨어다수가있을 때 자격 표현이 결합 된and, 이것은 일반 표현에서하는 일입니다 명령의 버전. 트리거가 각각에 대해 한 번 호출됩니다 삭제되어야하는 2000 년 오래된 컴퓨터 중 하나의 인덱스 스캔을 초과합니다컴퓨터및 2000 인덱스 스캔소프트웨어. 범퍼카 토토 구현은 인덱스를 사용하는 두 가지 명령으로 수행됩니다. 그리고 표의 전체 크기에 따라 다릅니다소프트웨어범퍼카 토토이 여전히 더 빠를 지 여부 순차적 스캔 상황. 2000 명령 실행 SPI 관리자에 대한 트리거는 모든 색인이더라도 시간이 걸립니다. 블록은 곧 캐시에있을 것입니다.
우리가 보는 마지막 명령은 다음과 같습니다.
제조업체 = 'bim';의 컴퓨터에서 삭제
다시 많은 행이 삭제 될 수 있습니다컴퓨터. 그래서 트리거가 다시 실행됩니다 집행자를 통한 많은 명령. 에 의해 생성 된 명령 규칙은 다음과 같습니다 :
Computer.Manufacturer = 'BIM'소프트웨어에서 삭제 및 Software.HostName = Computer.HostName;
그 명령에 대한 계획은 다시 2 개 이상의 중첩 루프가 될 것입니다. 인덱스 스캔, 다른 인덱스를 사용하여컴퓨터:
NestLoop - 컴퓨터에서 comp_manufidx를 사용한 색인 스캔 - 소프트웨어에서 soft_hostidx를 사용한 색인 스캔
이 경우 범퍼카 토토 시스템의 추가 명령이 있습니다. 영향을받는 행의 수와는 다소 독립적입니다. 명령에서.
요약은 범퍼카 토토이 그들의 행동이 크고 심하게 자격을 갖추게하는 경우 트리거 가입, 플래너가 실패하는 상황.
이전 | 배트맨 토토 : 문서 : 9.3 : 배트맨 토토 9.3.25 문서화 | 윈 토토 : 문서 : 9.3 : 절차 언어 |
범퍼카 토토 및 명령 상태 | PostgreSQL : 문서 : 9.3 : 사설 토토 시스템 | 절차 언어 |