데이터 집합을 사용하는 경우 데이터 집합 캐시
Crystal Reports for Visual Studio 프로젝트의 확장성을 최적화하는 방법 중 하나로 프로젝트에 사용되는 데이터 집합을 캐싱할 수도 있습니다.
데이터 집합 사용 기준
앞부분에서 언급한 바와 같이 데이터 집합은 다음과 같은 경우에 유용합니다.
- 쿼리를 실행한 다음 데이터 집합의 데이터를 수정해야 하는 경우
- 여러 데이터 소스의 데이터를 결합해야 하는 경우
참고 데이터 집합은 일반적으로 데이터베이스의 데이터에 대한 XML 표현입니다. 데이터 집합은 데이터베이스의 단일 테이블이 아니라 테이블 그룹에 상응합니다. 이는 보고서에 대한 잠재적인 확장성 문제를 내포하고 있습니다. 보고서에서 데이터 집합의 여러 테이블을 검색하고 이러한 테이블 사이에 결합이 필요한 경우, 보고서에서 각각의 테이블과 상호 작용할 때 결합 과정을 처리해야 합니다. 이는 효율적인 프로세스가 아닙니다. 항상 데이터 집합을 채우는 데 사용되는 쿼리 내에 결합 문을 배치하는 것이 좋습니다. 이렇게 하면 데이터 집합에서 사전 결합된 데이터의 '의사 테이블' 하나가 생성되므로 보고서에서 데이터를 표시하는 작업에 주력할 수 있습니다.
데이터 집합 캐시 방법
데이터 집합을 캐싱하면 훨씬 더 유용한 확장성 도구로 활용할 수 있으며, 그 이유는 다음과 같습니다.
런타임에 보고서를 로드할 때 Crystal Reports 보고서 엔진은 데이터베이스 연결 풀링을 수행하려고 합니다. 예를 들어 세 명의 사용자가 동일한 보고서를 사용하는 동일한 ASPX 페이지를 선택하면 하나의 데이터베이스 연결을 통해 이러한 세 개의 쿼리가 모두 풀링됩니다. 그러나 쿼리 자체는 풀링되지 않습니다. 세 가지 경우 모두 쿼리가 동일하다 해도 보고서 엔진을 통해 보고서가 요청될 때마다 쿼리를 수행해야 합니다. 쿼리 속도가 느리거나 데이터 집합이 큰 경우 이러한 사용자별 쿼리로 인해 응용 프로그램에서 병목 현상이 발생할 수 있습니다.
이와 같이 동일한 사용자별 쿼리를 여러 차례 수행하여 데이터 집합을 과도하게 채우는 경우 메모리 오버헤드로 인해 성능이 더욱 저하될 수 있습니다.
데이터베이스에 대한 쿼리 수를 줄이려면 첫 번째 쿼리 이후에 ASP.NET Cache 개체에 데이터 집합을 배치하여 모든 보고서 작업에서 캐시의 단일 데이터 집합을 공유할 수 있도록 합니다.
참고 |
---|
데이터 집합 캐싱에 대한 자세한 내용은 이 자습서의 부록을 참조하십시오. |
참고 항목
-
이 자습서에서는 ADO.NET 데이터 집합에 연결된 보고서를 만드는 방법과 응용 프로그램에서 이 보고서를 표시하는 코드를 작성하는 방법에 대해 설명합니다.