.bacpac 파일이 동일한 데이터베이스의 .bak 파일에 비해 작은 이유는 무엇입니까?

다른 서버로 가져 오기 위해 SQL Server 2014 Express 데이터베이스의 백업을 수행했으며 및 .bak.

.bacpac 파일이

파일이 같은 데이터베이스입니까?

통찰 해 주셔서 감사합니다!

답변

A

  • .bacpac 파일 = 스키마 + 데이터. 데이터는 기본 형식을 사용하여 BCP”처리됩니다. 사람이 읽을 수 있음).

    • .bacpac의 이름을 .zip로 변경하여 실제 내용.

    • ...DAC\bin\sqlpackage.exe 명령 줄을 사용하여 .bacpac 콘텐츠를 프로그래밍 방식으로 제공합니다.

    • 스냅 샷 SQL Server 또는 Azure SQL Database의 사용자 데이터 + 스키마를 포함합니다.

  • 백업 (일반적으로 .bak 확장자 포함) = 전체 데이터베이스 백업에는 데이터베이스의 전체 사본이 포함되며 데이터베이스를 복원 할 수있는 단일 시점을 제공합니다. 전체 백업에는 일부 트랜잭션 로그 레코드가 포함되어 복원 된 구성 요소 (데이터베이스, 파일 또는 파일 그룹)를 트랜잭션 적으로 일관성있게 만들 수 있습니다.

BACPAC는 전체 백업을 대체하지 않습니다. 한 서버에서 다른 서버로 데이터베이스를 이동하는 데 사용할 수있는 스냅 샷일뿐입니다. 다른 (또는 클라우드) 및 기존 데이터베이스를 개방형 형식으로 보관 합니다.

내 테스트 결과는 다음과 같습니다.

여기에 이미지 설명 입력

댓글

  • 로그 파일은 아마도 크기 차이의 가장 큰 원인 일 것입니다.
  • 나는 ' 그곳에 있다고 가정합니다. ' .bacpac에도 색인 데이터가 없습니다. 이는 파일 크기에 큰 영향을 미칠 가능성이 높습니다.

답변

명령 (.bak)은 데이터베이스의 페이지 별 복사본입니다. SQL Server 데이터베이스에는 데이터 페이지 만 포함되어 있지 않습니다. 인덱스가 클 수있는 페이지도 있습니다. 자세한 내용은 여기

데이터 계층 내보내기 애플리케이션 (.bacpac)을 사용하여 생성 된 백업 작업은 아카이브에 배치 된 XML 형식의 데이터베이스에서 내 보낸 행입니다. BACPAC의 내용을 수동으로 볼 수 있으며이 파일의 확장자를 .zip으로 변경하기 만하면됩니다.

파일은 데이터베이스의 레코드 수에 정비례합니다 (압축 비율 고려).

.bak 파일의 크기는 데이터뿐만 아니라 색인 크기에 따라 다릅니다.

때로는 이것이 문제가 될 수 있습니다. 예를 들어 이전 토론

을 확인하십시오.

그러므로 .bacpac 파일은 일반적으로 크기가 더 작습니다.

AdventureWorks 데이터베이스로 가장 간단한 테스트를 실행 한 결과 이러한 결과입니다.

AdventureWorks.bacpac - 17 mb AdventureWorks.bacpac.zip - 16 mb AdventureWorks_with_compression.bak - 49 mb AdventureWorks_with_compression.bak.zip - 47 mb 

백업 크기를 줄이기 위해 .bacpac을 사용해야합니까?

아니요.

Export \ Import Data Tier 애플리케이션에는 대규모 데이터베이스에 중요한 몇 가지 중요한 단점이 있습니다.

  1. 이것은 트랜잭션에서 일관된 작업이 아닙니다. 테이블은 순차적으로 내보내집니다. 외래 키에 문제가있을 수 있습니다. 회복하려고 할 때만 발견하기 때문에 두 배로 나쁩니다. 따라서이 작업을 수행 할 때 데이터베이스의 스냅 샷을 찍고 스냅 샷을 내 보내야합니다.
  2. 내보내기와 가져 오기 모두 시간이 훨씬 더 걸립니다. 긴급하게 복원을 실행해야하는 순간에는 .bacpac에서 복원을 완료하는 데 몇 시간이 걸리기 때문에이 작업을 수행 할 수 없습니다.
  3. 내보내기는 특히 대규모의 경우 서버에 상당한 부하를 줄 수 있습니다. 테이블은 이전 지점과 함께 정기적 인 백업을 모호한 결정으로 만듭니다.

BACKUP DATABASE 명령을 사용하여 생성 된 기본 백업에는 이러한 단점이 없으므로 공간을 절약하기 위해 특정 시점 복구

내보내기 \ 데이터 계층 애플리케이션 가져 오기는 액세스 권한이없는 경우 소규모 데이터베이스에 대해서만 백업을 생성하는 방법으로 고려할 수 있습니다. 파일 시스템. 이 경우 어떤 상황에서도 라이브 데이터베이스를 내 보내지 말고 일관된 내보내기를 위해 스냅 샷을 만들어야합니다.

답변

음, 가장 큰 차이점은 일반적인 .bak의 경우가 아닌 .bacpac 파일의 데이터가 압축 (zip 사용)된다는 것입니다. 파일. .bak 파일을 압축하고 파일이 훨씬 더 작은 지 확인하세요.)

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다