SQL Server 2008의 최대 테이블 용량


11

매년 10 억 개가 넘는 행을 테이블에 삽입하는 응용 프로그램이 있습니다. 이 테이블에는 일부 varcharbigint열과 하나의 블롭 열도 포함됩니다.

10 억 개의 행은 추적 목적으로 유지되는 기록 데이터로 구성됩니다. 따라서 최대 테이블 크기에 대한MSDN 기사에 따라이 구조를 계속하면 테이블 용량 제한이 있는지 궁금합니다 .

해당 링크에 언급 된 데이터 파일 크기가 테이블 데이터 파일 그룹을 참조합니까?


@marc_s 감사합니다. 무엇보다도 우리가 이들에 집단적 관심을 기울이는 힙 (Heap) 에 참여해주십시오
JNK

각 행의 최대 크기는 얼마입니까?
Nick Chammas

답변:


6

디스크 공간을 제외하고 실질적인 제한은 없습니다. 나는 당신이 완전히 연결된 테이블을 읽고 확인했습니다.

16TB를 초과해야하는 경우 여러 파일이 필요합니다 (간단한 절차).


나는 이것이 올바른 경우 테이블을 분할하고 다른 파일 그룹을 사용하도록 분할을 통해 얻을 수 있다고 생각합니까?
GAP

1
필요조차 없습니다. 기존 파일 그룹에 새 파일을 추가하기 만하면됩니다. SQL Server는 모든 파일을 고르게 채우기 시작합니다. 한 파일이 더 이상 커질 수 없으면 다른 파일 만 커집니다.
usr

2

SQL Server 2008의 테이블은 많은 수의 레코드를 처리 할 수 ​​있으며 @usr에서 언급했듯이 디스크 공간에 따라 다르지만 테이블에 많은 행이 있고 계속 증가하면 분할 된 테이블을 사용하는 것이 좋습니다 http://technet.microsoft . com / en-us / library / dd578580 (v = sql.100) .aspx

데이터베이스 테이블의 크기가 수백 기가 바이트 이상으로 커지면 새 데이터를로드하고 오래된 데이터를 제거하며 인덱스를 유지 관리하기가 더 어려워 질 수 있습니다.

그것에 대한 자세한 정보

http://msdn.microsoft.com/en-us/library/ms190787.aspx

및 그것을 구현하는 방법 http://blog.sqlauthority.com/2008/01/25/sql-server-2005-database-table-partitioning-tutorial-how-to-horizontal-partition-database-table/


당신은 할 필요가 정말 하지만 분할에주의. 사용 사례뿐만 아니라 기능과 키도 신중하게 고려해야합니다. 파티셔닝 할 논리 필드는 쿼리에서 절대로 사용될 수 없으므로 성능이 저하됩니다.
JNK

단일 테이블의 수십억 행도 성능에 영향을 미치며 많은 테이블에서 ur 데이터를 매년 별도의 테이블로 분할하는 옵션이 있으며 모든 데이터를 보려면 u를 사용할 수 있지만 뷰는 적어도 각 테이블에서 unsert와 update가 더 빠릅니다.
AmmarR

거대한 테이블의 삽입은 반드시 느릴 필요는 없으며 키와 인덱스에 따라 다릅니다. 700m 개의 기존 행이있는 테이블에 약 30m 행의 월간로드를 수행하며 파티셔닝을 수행하지 않습니다. 분할을 시도했지만 해결 된 것보다 많은 문제가 발생했습니다. 실제로 확인하려면 질문입니다.
JNK

내 히스토리 데이터를 별도의 테이블로 이동하고 통합 뷰를 작성하여 쿼리 히스토리 + 시스템에있는 쿼리의 약 25 % 미만인 최신 데이터가 필요할 때 애플리케이션에서 사용할 수 있도록 통합 뷰를 작성하려고했습니다. 데이터를 여러 데이터 파일로 만들거나 데이터를 최신으로 표시하는 열을 기준으로 테이블을 분할하는 것보다 더 효율적입니까? 보다 효율적인 IO 작업에서? 내 의심은 원인이 두 솔루션 모두에서 IO 관점에서 동일하다는 것입니다.
GAP

당신이 취하는 모든 접근법에는 좋거나 나쁠 수있는 모범 사례가 있습니다. 테이블이 많으면 쿼리가 복잡하고 유지 관리가 어려울 것입니다. 테이블이 하나 있고 테이블 파티셔닝을 사용하면 다음과 같은 차이점을 고려해야합니다. SQL 에디션은 엔터프라이즈 급이어야하며, 더 나은 IO 작업을 위해서는 많은 데이터 파일을 갖는 것이 권장되지만 모범 사례도 있습니다. SQL 성능을위한 직접적인 방법은 없습니다.
AmmarR

0

아마도 분할보기 가 작동 했을 것입니다.

로부터 사용 분할 된 뷰 MSDN 기사 :

분할 된 뷰를 사용하면 큰 테이블의 데이터를 더 작은 멤버 테이블로 분할 할 수 있습니다. 데이터는 열 중 하나의 데이터 값 범위에 따라 멤버 테이블간에 분할됩니다. 각 멤버 테이블의 데이터 범위는 파티셔닝 열에 지정된 CHECK 제약 조건에 정의되어 있습니다. 그런 다음 UNION ALL을 사용하여 모든 멤버 테이블의 선택을 단일 결과 세트로 결합하는보기가 정의됩니다. 뷰를 참조하는 SELECT 문이 파티션 컬럼에서 검색 조건을 지정할 때, 쿼리 최적화 프로그램은 CHECK 제한 조건 정의를 사용하여 행을 포함하는 멤버 테이블을 판별합니다.

AmmarR이 그의 답변에서 정보를 제공 한 Paritioned Table과 어떻게 다른지 잘 모르겠습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.