현재 계층 적 데이터베이스 개체에서 작업을 복사하는 Windows Forms .NET 2.0 응용 프로그램에서 성능을 최적화하려고합니다. 트리의 각 개체는 데이터베이스 테이블의 행에 의해 표현된다데이터베이스에서 다소 큰 서브 트리를 복제하는 실용적인 방법?
: 여기
은 예시적인 구조이다. 또한 각 객체에 대해 여러 개의 "측면 객체"가 연관되어 있습니다. 예 : 테스트 케이스 객체는- 1..N 권한
- 1..N 첨부
- 속성 1..N
- 을 ...
이 "쪽이 -objects "는 별도의 데이터베이스 테이블에 저장됩니다.
복사 나무
응용 프로그램의 사용자는 마우스 오른쪽 버튼을 클릭하고 "복사"다음 트리의 다른 위치에 나중에 붙여 넣기, 트리 요소를 선택할 수 있습니다.
이 작업은 모든 하위 개체와 모든 "하위 개체"를 새 위치로 복사합니다.
데이터베이스 관점에서 보면 복사 할 하위 트리의 크기에 따라 SELECT
및 INSERT
문이 수 백 또는 수 천 개가 될 수 있습니다.
사용자 관점에서 볼 때 UI가 반응하도록 대화 상자가 진행 중입니다. 그 외에도 대부분의 사용자는 "... 간단한 복사 및 붙여 넣기 ..."작업을 수행하는 데 너무 오래 걸린다 고 불평합니다.
성능 최적화는
그래서 내 목표는 물건을 속도를하는 것입니다.
현재의 알고리즘은 이런 식입니다 :
- 는 DB에서 개체를 읽어보십시오.
- 이 개체를 DB에 새 항목으로 저장합니다.
- 개체의 모든 "side-objects"에 대해 동일한 작업을 수행하십시오.
- 개체의 모든 하위 개체에 대해 동일한 작업을 반복적으로 수행합니다. 당신이 상상할 수 있듯이
는 많은 수의 개체에 대해이 신속하게 데이터베이스 작업의 많은 수의 요약.
지금까지 (일괄 처리 작업을 수행하는 방법에 대한 단서가 없었지만 이후에는 어떤 개체에 대해 어떻게 그리고 어떻게 처리 할 것인가?) 궁금한 점이 있었기 때문에 제 질문은 다음과 같습니다.
내 질문
당신이 나에게 상기 한 바와 같이 계층 적으로 관련된 많은 수의 개체를 복제하는 방법에 대한 힌트/패턴/모범 사례를 줄 수 있습니까?
난 당신이 많은 원인이되는 당신의 .NET 응용 프로그램의 모든 복제를하고있는 있으리라 믿고있어
당신의 가정은 맞고 제안은 정말 훌륭하게 들린다! 나는 그 위에 잠을 자고 구현 방법에 대해 생각할 것입니다. 고마워요! –