2008-10-14 6 views
4

SQL Server 테이블의 테이블 행 수에 엄격한 제한이 있습니까? 나는 유일한 제한이 물리적 인 저장을 기반으로한다는 인상을 받고 있습니다.SQL Server 테이블의 행 수 제한

인덱스가있는 테이블과없는 테이블에서 성능이 크게 저하됩니다. 매우 큰 테이블에 대한 공통된 실습이 있습니까?

약간의 도메인 정보를 제공하기 위해 데이터베이스의 모든 테이블에 대한 필드 변경 사항을 기록하는 감사 테이블의 사용을 고려하고 있으며 어떤 유형의 벽이 실행되는지 궁금합니다.

답변

2

사용 가능한 저장소에 의해 행 수가 제한된다는 것이 맞습니다.

서버 하드웨어, 구성 및 쿼리의 효율성에 따라 숫자가 다를 수 있습니다.

예를 들어 간단한 select 문은 행 수가 늘어남에 따라 전체 텍스트 또는 근접 검색보다 빠르게 실행되고 성능이 저하됩니다.

2

BrianV가 정확합니다. 테이블을 어떻게 사용할지, 테이블의 실제 열에 따라 달라 지므로 규칙을 정하기는 어렵습니다.

매우 큰 테이블에 대해서는 고려할 수 있습니다 파티셔닝. 로그에 대해 최근 1 개월 (또는 1 일, 1 주, 1 년 등)의 변경 사항 만 관리하는 경우에 특히 유용 할 수 있습니다. 그런 다음 데이터의 이전 부분을 보관하여 절대적으로 필요하면 사용할 수 있지만 거의 필요하지 않으므로 방해가되지 않습니다.

아직 고려하고 있지 않은 경우 실제 테이블 각각에 대해 별도의 변경 로그 테이블을 갖는 것도 고려해야합니다. 단일 로그 테이블을 사용하면 작업하기가 매우 어려워집니다. 일반적으로 쿼리 및 처리가 어려운 자유 형식의 텍스트 필드에 정보를 기록해야합니다. 또한 동시에 열리는 변경 사항을보기 위해 많은 조인을해야하기 때문에 변경된 각 열에 대해 행이있는 경우 데이터를 보는 것은 어렵습니다.

1

감사 테이블을 사용하는 또 다른 방법은 한 달에 한 번 (또는 데이터를 넣는 양에 따라 주) 데이터를 보관하는 것입니다. 그렇게하면 새로운 데이터로 최근 변경 사항을 다시 작성해야하므로 더 작은 테이블에 대해 수행 할 수 있으므로 더 빨리 수행 할 수 있습니다 (감사 테이블 복구는 필자가 찾은 긴급한 과제입니다). 그러나 시간이지나면서 다시 돌아갈 필요가있을 때를 대비하여 데이터를 사용할 수 있습니다.

2

위의 모든 내용 외에도 훌륭한 추측을 통해 인덱스/성능 지점에 대해 좀 더 자세한 내용을 제공 할 것이라고 생각했습니다.

위에서 언급했듯이 인덱스의 품질과 수에 따라 성능 번호를 부여 할 수 없습니다. 또한 최적화 할 작업에 따라 다릅니다. 인서트를 최적화해야합니까? 또는 쿼리 응답에 대해 더 염려합니까?

삽입 속도, 분할, 그리고 매우 신중한 색인 고려 사항이 중요 할 것입니다.

Tom H의 별개의 테이블 추천은 또한 좋은 생각입니다.