2013-11-01 1 views
0

우리는 약 30 000 0000 개의 행을 가진 큰 테이블을 가지고 있으며 매일 현재 하루 100,000 개의 행으로 성장하고 있으며 그 수는 시간이지나면서 증가 할 것입니다.웹상에 표시된 대형 테이블에 대한 통계

오늘 우리는 데이터베이스 (MS-SQL 2012)에서 다른 보고서를 직접 생성하고 많은 계산을 수행합니다.

문제는 시간이 걸리는 것입니다. 우리는 색인 등을 가지고 있지만 오늘날 사람들은 엄청나게 빠른 보고서를 원합니다.

우리는 또한 시간주기, 데이터를 보는 다른 방법 등을 바꿀 수 있기를 원합니다.

우리는 어제부터 모든 데이터를 가져 와서 쿼리 및 보고서의 속도를 높이기 위해 무언가를 할 수 있도록 하루가 지난 데이터 만 살펴 봐야합니다.

그렇다면 Excel 또는 BI 도구가 아닌 웹에서 빠르고 쉽게 사용할 수있는 솔루션에 대한 아이디어가 있습니다.

오늘 모든 보고서 2012 테이블 ..

+2

** 실시간 데이터를보고하지 마세요 **. 별도의보고 데이터베이스를 작성하거나보고 데이터를 저장할 데이터웨어 하우스 및 OLAP 큐브를 생성하십시오. 보고에 대해 이야기 할 때 30M 레코드가 상대적으로 적은 양의 데이터입니다. –

+0

동일한 데이터에 대해 동일한 보고서를 여러 사람이 호출하는 경우 캐시 할 수 있습니다. – Todoy

+0

BI 솔루션을 사용하지 않으려는 경우 테이블을 분할하여 보았습니다. 따라서 일 데이터 만보고 테이블을 올바르게 파티션하면 쿼리가 잠재적으로 일일을 평가하면됩니다. 행의 가치. – steoleary

답변

0

당신은 OLTP 시스템이 MS SQL에 대해 querys와의 asp.net C#을 웹 양식에 있습니다. 일반적으로 이와 같은 시스템에서 처리량을 극대화하려고합니다. 보고는 데이터 수집을 위해 래치와 잠금이 필요합니다. OLTP의 처리량에 영향을 미치고 성능에 부정적인 영향을 미치기 때문에보고 (추가 색인)에 좋은 점이 OLTP에 좋지 않을 것입니다. 심지어 WITH(NOLOCK)을 치는 것이 그 짐을 덜어 줄 것이라고는 생각하지 마십시오. ;)

다른 사람들도 언급했듯이 보고서 데이터에서 활성 데이터를 분리하는 것이 좋습니다.

테이블을 분할하면 Enterprise Edition을 사용할 수 있습니다. 그렇지 않으면 Paritioned Views과 같은 몇 가지 해커를 수행해야하며 데이터가 액세스되는 방식에 따라 작동하지 않을 수도 있습니다.

필자는 정기적 인 간격으로 시스템에서 필요한 데이터를 추출하여 다른 곳으로 밀어 넣었습니다. 동일한 데이터베이스의 다른 테이블 세트 또는 동일한 서버의 다른 카탈로그 또는 전혀 다른 서버가 여러 변수 (비용, 구현 시간, 데이터의 복잡성, 속도 요구 사항, 스토리지 하위 시스템 등)에 의존하는지 여부).

매우 구체적인보고 요구 사항 (현재는 어제의 데이터를 보았지만 더 많이 볼 수 있으면 좋을 것 같습니다)이 들리니보고 표에 Columnstore Indexes을 구현하는 것이 좋습니다. 특정 집계 (WTD, MTD, YTD 등)를 지정할 필요가없는 이점이있는 집계 테이블에서도 쿼리 집계에 놀라운 성능을 제공합니다. 그러나 단점은 읽기 전용 데이터 구조 (그리고 인덱스를 생성하는 동안 메모리 & cpu hog)라는 것입니다. SQL Server 2014는 giggity가 될 수있는 업데이트 할 수있는 columnstore 인덱스를 도입 할 예정이지만 시간이 좀 걸릴 것입니다.