2014-04-29 3 views
0

SSRS 보고서에 의해 생성 된 DB로드를 줄이는 확실성이 있는지 알고 싶습니다. 몇 가지 하위 보고서로 구성된 SSRS 보고서가 있습니다. 그들 모두는 적어도 하나의 DB 쿼리를 가지고 있습니다. 가장 하위 보고서 동적 데이터로 채워진 템플릿 헤더의 종류가 있기 때문에 그SSRS 보고서에 의해 생성 된 DB로드를 향상시키는 방법

  1. 대부분은 동일한 데이터를 쿼리합니다.
  2. 일부 하위 보고서는 쿼리에서 데이터를 반환하는지 여부에 따라 표시됩니다. 따라서 보고서를 표시할지 여부를 결정하기 위해 데이터를 쿼리하면 그런 다음 보고서 자체는 테이블 일반적으로

내가 하위 보고서에 부모 보고서에서 쿼리 DB 데이터를 전달하는 메커니즘이 필요하다는 것을 내가 말할 수있는 그것을 보여주기 위해 동일한 데이터를 쿼리합니다. 상위 보고서는 일부 데이터를 쿼리하고 데이터 집합을 반복하며 모든 데이터 집합에 대해 현재 데이터 집합을 매개 변수로 전달하는 하위 보고서를 표시합니다.

데이터 세트 (데이터 행)를 전달하는 메커니즘을 찾을 수 없습니다. 그래서 데이터 세트 ID의 일종을 전달하여 하위 보고서를 표시합니다. 하위 보고서 자체는 동일한 데이터를 다시 쿼리하고 전달 된 데이터 집합 ID로 필터링하며 관련 데이터 집합 만 표시합니다. 이로 인해 DB에 막대한 부하가 발생합니다.

미리 감사드립니다.

+0

특정 쿼리를 분석하고 그에 따라 최적화해야합니다. 총 7 개의 쿼리가 실행중인 경우 해당 쿼리를 모두 분석하여 'DB에 대한로드'를 유발하는 원인을 찾아서 수정합니다. 마스터/세부 유형 쿼리에 대한 우려가있는 경우 보고서를 하나의 쿼리 만 실행하도록 변환해야하지만 가능하지 않을 수도 있습니다. 반복적으로 (다른 매개 변수로도) 동일한 쿼리를 실행하면 어쨌든 캐싱 등에서 몇 가지 효율성을 얻을 수 있습니다. –

답변

1

당신이 설명하는 디자인은 상당히 표준 적이며 "DB에 거대한 부하"가 발생할 것으로 기대하지는 않습니다. 10 개의 필터링 된 하위 보고서를 실행하는 DB로드가 동일한 10 개의 항목을 다루는 하나의 보고서를 실행하는 것보다 약 10-20 % 만 더 많을 것으로 기대합니다.

"데이터 세트 ID"열에 색인을 추가하여 필터를보다 효율적으로 만들 수 있습니다.

+0

마이크 감사합니다. DB 쿼리는 상당히 성능이 좋지만 몇 가지 하위 보고서에 대해 여러 번 실행되는 것이 문제입니다. DB는 프론트 엔드 코드에 의해 동시에 사용되며 보고서가 생성되는 동안 프론트 엔드의 응답 성이 떨어질 까봐 두렵습니다. – llasarov

+0

글래스가 실제로 반으로 가득 차서 문제가 없을 수도 있습니다 .-) 어쨌든 # 2 시나리오의 영향을 줄이려면 상위 보고서에서 해당 데이터 세트를 제거하십시오. 하위 보고서에서 데이터 집합이 모든 행을 반환하지 않으면 모든 테이블 등을 숨길 것입니다. –

0

조회 기능을 사용하는 포함 된 보고서의 복잡성에 따라 허용되는 더 빠른 해결책이 될 수 있습니다. 또한 데이터가없는 행이나 하위 보고서 숨기기에 대한 이전 설명도 여기에 적용됩니다.

관련 문제