2016-09-23 2 views
0

수십억 개의 레코드가 포함 된 거대한 스키마가 있으므로 13 개월이 지난 데이터를 제거하고 필요할 때마다 다시 복구 할 수있는 방식으로 백업을 유지하려고합니다.SQL의 데이터 백업

SQL에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까?이 스키마를 별도로 만들고 모든 테이블에 삭제 트리거를 추가하면 트리거가 실행될 때 제거 된 데이터가이 새 스키마에 삽입 될 수 있습니까?

트리거를 사용할 경우 삭제 명령문 당 하나의 레코드 만 있습니까? 아니면 모든 기록이 삽입됩니까? 어떻게 든 대량 복사를 사용할 수 있습니까?

+0

이 질문은 [Stack DBA] (http://dba.stackexchange.com/)에 더 적합한 질문 일 수 있습니다. 저장된 레코드 수를 줄여 데이터베이스 성능을 향상 시키려고합니까? 이미 큰 테이블을 분할하려고 했습니까? –

답변

0

트리거가 필요하지 않으므로 매일 실행중인 작업을 사용할 수 있습니다. 그러면 구식 데이터가 아카이브 테이블에 저장됩니다.

가장 좋은 방법은 현재 스키마의 복사본을 만드는 것입니다. 주요 부분 - 오래된 13 개월, 아카이브 부분 - 모두 지난 13 개월 동안 삭제하십시오.

데이터를 수집 할 SP (또는 모든 SP)를 작성하는 것보다 먼저 아카이브에 저장하고 기본 테이블에서 삭제하십시오. 이것을 매일 실행하는 일에 넣으십시오.

+0

광산은 일회 일하고 있는데, 데이터가 프런트 엔드에서 성능이 떨어지는 많은 공간을 차지하고 있기 때문에 한 번만해야합니다. 나는 이미 13 개월 이상 된 청크에서 데이터를 삭제할 스크립트를 만들었습니다. 남아있는 부분은 삭제 된 데이터를 백업하는 것입니다. – Aashi

1

나는이 SQL Server의 스트레치 데이터베이스 기능을 완벽하게 사용할 수있는 경우이다 제안 2016

상세 정보 : https://msdn.microsoft.com/en-gb/library/dn935011.aspx

차가운 데이터가없이 주어진 날짜 기준으로 클라우드로 이동할 수 있습니다 모든 응용 프로그램 또는 사용자가 데이터베이스를 쿼리 할 때이를 인식합니다. 필요한 백업이없고 설치가 매우 쉽습니다.

0

이것을 수행하는 가장 빠르고 가장 빠른 방법은 수십억 개의 행을 사용하여 아마도 월별 날짜 열을 기준으로 분할 된 테이블을 만드는 것입니다. 주어진 파티션에서 데이터를 이동하는 것은 메타 작업이며 매우 빠릅니다 (파티션 설정과 그 기능이 제대로 설정된 경우). 나는 파티션을 사용하여 300GB 테이블을 관리했으며 매우 효과적이었습니다. 파티션 기능에주의하여 각 가장자리의 날짜가 올바르게 처리되도록하십시오.

몇 가지 다른 제안 된 해결책은 실행하는데 오랜 시간이 걸릴 수있는 수백만 개의 행을 삭제하는 것을 포함합니다. 프로파일 러 및/또는 확장 이벤트를 사용하여 다른 솔루션을 모델링하여 어느 것이 가장 효율적인지 확인하십시오.

0

나는 위의 사항에 동의하여 방아쇠를 만들지 않습니다. 모든 삽입/업데이트/삭제와 함께 트리거를 실행하면 속도가 느려집니다.

데이터 보관 저장 프로 시저를 가장 잘 사용할 수 있습니다.

여러 데이터베이스 사용을 고려하십시오. 현재 데이터가있는 현재 데이터베이스입니다. 그런 다음 아카이브 또는 여러 아카이브 데이터베이스에서 레코드를 현재 데이터베이스에서 데이터를 이동시키는 일별 또는 야간 저장 프로 시저 프로세스로 이동합니다.

프로덕션 시스템과 동일한 스키마를 사용할 수 있습니다.

데이터가 이미 데이터베이스에있는 경우 대량 복사가 필요하지 않습니다. 여기에서 아카이브 데이터베이스를 백업하여 SQL 서버와 분리 할 수 ​​있습니다. 필요한 경우 데이터베이스를 복원하여 데이터를 다시 사용할 수있게 만드십시오. 이것은 대량 복사보다 훨씬 빠르고 관리가 용이합니다.

+0

내 데이터베이스에는 여러 스키마가 있습니다.이 중 10 억 개의 레코드가 하나의 스키마에 있으며,이 특정 스키마 만 데이터로 백업 할 수 있습니까? SQL Server 2008 R2를 사용하고 있습니다. – Aashi

0

Microsoft의 Stretch DB 설명서 (여기에서 - https://docs.microsoft.com/en-us/azure/sql-server-stretch-database/)에 따르면 콜드 스토리지 또는 마이그레이션 할 수있는 행으로 마이그레이션 된 행을 업데이트하거나 삭제할 수 없습니다.

따라서 Stretch DB는 아카이브를위한 가능한 기술처럼 보이지만 SQL 2016의 구현은 아카이브 및 제거를 지원하지 않습니다.