delete cascade 예제

이 하루를 통해 발생하는 몇 가지 삭제가 있지만 나는 50K +의 야간 퍼지가 있지만 10K의 배치 (예 최소 단일 퍼지에서 삭제 된 최소는 10K입니다 – 개별 10K 삭제하지, 10K의 일괄 처리에서 삭제해야, 나는 dat에 대한 너무 많은 볼륨을 생성하지 않으려는 abase가 복제되므로 루프에서 실행하고 루프당 단일 최대값으로 10K를 삭제합니다. 이제 이러한 시나리오에서 하루에 50K + 행을 삭제하면 인덱스 찾기 (FK의 인덱스)와 함께 9 개의 테이블에서 열망하는 스풀이 표시됩니다. 결과적으로 성능이 향상되지 않고 더 높은 볼륨의 경우 트리거가 캐스케이드보다 더 잘 수행되는 시나리오를 보고 있습니다. 계획에서 열망스런 스풀뒤에 있는 이유/ 방법을 잘 모르겠습니다. 몇 가지 예제와 함께 DELETE 및 UPDATE CAS CADE 규칙을 사용하여 외래 키를 만드는 방법을 살펴보겠습니다. 경우에 따라 테이블에서 데이터를 삭제할 때 MySQL ON DELETE CAS 참조 작업의 영향을 받는 테이블을 아는 것이 유용합니다. information_schema 데이터베이스의 referential_constraints에서 이 데이터를 쿼리할 수 있습니다. 트랙은 dbo에서 AlbumID를 참조합니다. 앨범. 여기에는 두 가지 계단식 작업이 지정되어 있습니다. 외래 키에서 업데이트를 알고 작업을 삭제하려면 sys.foreign_keys 보기를 쿼리합니다. 스크립트의 제약 조건 이름을 바꿉니다. 보시다시피 building_no 2를 참조하는 모든 행이 삭제되었습니다.

이 자습서에서는 상위 테이블에서 데이터를 삭제할 때 외부 키에 대해 MySQL ON DELETE CAS 참조 작업을 사용하여 자식 테이블에서 자동으로 데이터를 삭제하는 방법을 단계별로 보여 주어 왔습니다. 삭제 규칙으로 계단식으로 두 번째 외래 키를 만들면 위의 delete 명령이 자식 테이블 “상태”의 레코드를 삭제하여 성공적으로 실행되며 두 번째 자식 테이블 “Cities”의 레코드를 삭제합니다. 스키마 레이아웃, 특히 9개의 테이블의 클러스터된 인덱스를 설명하는 방법을 고려할 때, 이것이 경합의 양이 가장 적다고 생각합니다. 성능을 최대화하려는 경우에만 삭제를 수동으로 처리하고 트리거 / 캐스케이드를 전혀 사용하지 않는 것입니다. 어쨌든 10,000 개의 레코드 (사용 중인 방법)를 삭제하는 것은 매우 느려야한다고 생각하지 않습니다. 호기심에서 얼마나 걸까요? 수동으로 삭제를 시도하고 훨씬 빠르면 tempdb가 데이터 및 로그 파일 (아마도 느린 것)과 다른 유형의 디스크에 있을 수 있으며 열망하는 스풀이 스풀의 결과로 저장되기 때문에 속도가 느려집니다. 이것은 간단히 캐스케이드 삭제 절에 대한 개념입니다. 당신은 몇 가지 실용적인 예에 대해 같은 내 튜토리얼을 볼 수 있습니다. 모든 의견이 검토되므로 주제를 유지하거나 귀하의 의견을 삭제할 수 있습니다. 참고: 이메일 주소가 게시되지 않습니다. 필수 필드는 별표(*)로 표시됩니다.

이름에서 알 수 있듯이 계단 삭제에서 부모 테이블에서 해당 값을 삭제하려는 시도가 있을 때 자식 테이블의 종속 열 항목을 삭제합니다. CASCADE는 참조된 열이 업데이트될 때 열이 업데이트되고 참조된 행이 삭제될 때 행이 삭제되도록 지정합니다. 오타가 아닙니다. 내가 언급 할 때 거의 성능 차이가 없다 나는 삭제 캐스케이드를 사용하고 개별 문과 각 테이블에서 레코드를 삭제 사이에 의미. 당신은 인덱스와 함께 큰 성능 이점이 있다는 점에서 정확합니다. 시나리오와 함께 내 경우를 expalin하자, 우리는 10 개 이상의 테이블을 가지고 있고 이들 중 하나는 마스터 테이블입니다 (즉, PK를 가지고 있지만 나머지는이 테이블에 FK를 가지고 있음).

Comments are closed.