What's 를 관리 할 수 있는 가장 좋은 방법의 큰 숫자의 테이블 MS SQL Server?

StackOverflow https://stackoverflow.com/questions/124237

문제

이 질문은 관련된 다른:
이 여러 그룹 속도 도움한 데이터베이스 내?

소프트웨어가 우리가 개발하는 분석 도구를 사용하는 MS SQL Server2005 년을 저장하는 관계형 데이터입니다.초기 분석 수 있(이후 우리는 수백만 처리 또는 수십억 개의 데이터 행)있지만,성능 요구 사항에 리콜 이전 분석을 빠르게,그래서 우리는"저장"을 결과의 분석.

우리의 현재 방법을 저장하는 분석 결과에서는 일련의 실행"-"특정 테이블과 분석이 충분히 복잡는 우리가 끝낼 수 있습으로 많은 100 테이블당 분석합니다.일반적으로 이러한 테이블을 사용하여 몇 백 MB 당 분석(작은 비를 우리의 수백 기가바이트,또는 때때로 여러 TB,의 원본 데이터).그러나 전반적으로,디스크 공간이 문제가되지 않습니다.각 설정의 테이블은 하나의 분석,그리고 많은 경우 이 제공하는 우리에게 엄청난 성능 개선을 통해 다시 참조하면 소스 데이터입니다.

접근 시작하면 일단 우리가 충분히 축적 저장 분석 결과를--하기 전에 우리는 더 강력한 아카이브/정리 능력,우리의 테스트 데이터베이스에 올랐러 만명 테이블이 있습니다.하지만 그것은 스트레치가 100,000 개 이상의 테이블에서도 생산합니다.Microsoft 소 예쁜 엄청난 이론에 대한 제한 크기의 시스템 개체의 이름은(~2 억 달러),하지만 일단 우리의 데이터베이스를 넘어 성장 100,000 또는 그래서,간단한 쿼리 만들기 같은 테이블과 테이블 삭제 느려질 수 있습니다.

우리는 몇 가지 방 토론 우리의 접근 방식은,그러나 내가 생각하는 힘든 수 있습니다하지 않고 더 많은 컨텍스트,그래서 그 대신하고 싶은 질문 더 일반적으로:는 경우에는 우리를 만드는 많은 테이블,최상의 접근 방식은 무엇인가에 대한 관리?여러 그룹?여러 개의 스키마/유?여러 데이터베이스?

다른 참고:나는 흥분하지 않습의 아이디어에 대한"단순히 하드웨어 던지고 문제"(즉추가 RAM,CPU,디스크 속도).그러나 우리는 그것을 밖으로 지배하지 않을 것이 하나,특히 경우(예)사람이 말할 수 있는 우리가 결정적으로 어떤 효과를 추가하 RAM 을 사용하거나 여러 그룹에 있을 것이 관리하는 대형 시스템 카탈로그입니다.

도움이 되었습니까?

해결책 4

우리는 종료 분할의 데이터베이스로 여러 데이터베이스가 있습니다.그래서 중요한 데이터베이스에 포함된"데이터베이스"표를 참조하는 하나 이상의 실행""데이터베이스 포함,각각의 고유 세트 분석의 결과입니다.다음 주"run"테이블에 데이터베이스가 포함되어 ID,그리고 코드를 검색하는 저장한 결과를 포함한 관련 데이터베이스에 접두사에서 모든 쿼리를 처리합니다.

이 방법을 사용하는 시스템 카탈로그의 각 데이터베이스를 더 합리적인 것,그것이 제공하는 더 나은 분리가 간의 핵심/영원한 테이블 및 동적/run 테이블,그리고 그것은 또한 백업 및 보관을 좀 더 쉽게 관리할 수 있습니다.그것은 또한 우리는 분할은 우리에 걸쳐 데이터를 여러 물리적 디스크만을 사용하여 여러 파일 그룹을 했을 것입니다.전반적으로,그것은 잘 작동하는 지금 우리에게 주어진 우리의 현재 요구 사항에 따라 예상되는 성장은 우리가 생각하는 것이 아니한 우리를 너무 좋습니다.

우리는 또한 주목하는 SQL2008 는 경향이 있을 처리할 시스템 카탈로그 보다 더 나은 SQL2000SQL2005 았다.(우리는 없었 업그레이드 2008 년을 때 나는 게시된 이 질문입니다.)

다른 팁

먼저 전체 시스템을 보지 않으면 서 첫 번째 권장 사항은 키의 일부로 Runid가있는 결합 테이블에 과거 실행을 저장하는 것입니다. 차원 모델도 여기에서 관련 될 수 있습니다. 이 테이블은 개선을 위해 분할 될 수 있으며,이를 통해 테이블을 다른 파일 그룹으로 전파 할 수 있습니다.

각 실행을 자체 데이터베이스에 넣은 다음 분리하여 필요에 따라 첨부 할 수있는 또 다른 가능성 (및 읽기 전용 양식).

마스터 또는 모델 데이터베이스가 이런 종류의 동작에 최적화되지 않기 때문에 테이블 및 드롭 테이블을 만들 수 있습니다.

또한 데이터베이스 디자인 선택에 대해 Microsoft와 대화하는 것이 좋습니다.

테이블은 모든 다른 구조물입니까? 그것들이 같은 구조라면 단일 파티션 테이블로 도망 갈 수 있습니다.

구조가 다른 구조이지만 동일한 치수 열의 하위 집합에만 해당되는 경우, 적용 할 수없는 열에 Nulls가있는 동일한 테이블에 파티션에 보관할 수 있습니다.

이것이 분석적 (파생 가격 계산 계산?) 인 경우 계산 실행 결과를 플랫 파일로 버리고 플랫 파일에서로드하여 계산을 재사용 할 수 있습니다.

이것은 당신이 함께 일하는 매우 흥미로운 문제/응용 프로그램 인 것 같습니다. 나는 이런 일을하고 싶습니다. :)

당신은 매우 큰 문제 표면적을 가지고 있기 때문에 도움을 시작하기가 어렵습니다. 게시물에 명백하지 않은 몇 가지 솔루션 매개 변수가 있습니다. 예를 들어, 실행 분석 테이블을 얼마나 오래 보관할 계획입니까? 질문해야 할 다른 질문이 많이 있습니다.

심각한 데이터웨어 하우징과 데이터/테이블 파티셔닝의 조합이 필요합니다. 보관할 데이터의 양과 보관소에 따라 테이블을 정규화하고 평평하게 시작해야 할 수도 있습니다.

이것은 Microsoft에 직접 연락하는 것이 상호 이익이 될 수있는 경우입니다. Microsoft는 다른 고객을 보여줄 수있는 좋은 사례를 얻고 공급 업체로부터 직접 도움을받습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top