SQL Server 2008 R2에는 60 억 개가 넘는 행이있는 3 열 테이블이 있습니다.
우리는 고객을 위해 분 단위 시스템 분석 차트를 만들기 위해 매일 쿼리합니다. 데이터베이스 성능 저하를 발견하지 못했습니다 (매일 ~ 1GB가 증가한다는 사실 때문에 백업 관리가 원하는 것보다 약간 더 복잡해집니다).
2016 년 7 월 업데이트

백업이 2 년 이상 된 레코드를 잘라내기로 결정할 수있을만큼 충분히 커지기 전에 최대 245 억 행 으로 만들었습니다 (고가의 테이프를 포함하여 여러 백업에 저장되는 최대 700GB). 이 결정에서 성과가 중요한 동기가 아니었다는 점은 주목할 가치가 있습니다 (즉, 여전히 훌륭하게 작동하고 있음).
SQL Server에서 200 억 개의 행을 삭제하려는 경우이 기사를 적극 권장 합니다 . 링크가 죽는 경우 관련 코드 (전체 설명은 기사 참조) :
ALTER DATABASE DeleteRecord SET RECOVERY SIMPLE;
GO
BEGIN TRY
BEGIN TRANSACTION
SELECT *
INTO dbo.bigtable_intermediate
FROM dbo.bigtable
WHERE Id % 2 = 0;
TRUNCATE TABLE dbo.bigtable;
SET IDENTITY_INSERT dbo.bigTable ON;
INSERT INTO dbo.bigtable WITH (TABLOCK) (Id, c1, c2, c3)
SELECT Id, c1, c2, c3 FROM dbo.bigtable_intermediate ORDER BY Id;
SET IDENTITY_INSERT dbo.bigtable OFF;
COMMIT
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK
END CATCH
ALTER DATABASE DeleteRecord SET RECOVERY FULL;
GO
2016 년 11 월 업데이트
이 정도의 데이터를 단일 테이블에 저장할 계획이라면하지 마십시오. 테이블 파티셔닝을 고려하는 것이 좋습니다 (수동으로 또는 Enterprise 에디션을 실행하는 경우 기본 제공 기능 사용). 이렇게하면 테이블을 한 번 (주 / 월 / 기타) 자르는 것만 큼 쉽게 오래된 데이터를 삭제할 수 있습니다. Enterprise (우리가없는)가없는 경우 한 달에 한 번 실행하고 2 년 이상 된 테이블을 삭제하고 다음 달의 테이블을 만들고 모든 파티션을 조인하는 동적 뷰를 다시 생성하는 스크립트를 작성하면됩니다. 쉬운 쿼리를 위해 함께 테이블. 분명히 "한 달에 한 번"및 "2 년 이상"은 사용 사례에 맞는 것을 기반으로 정의해야합니다.