특정 테이블에서 로깅 비활성화


9

SQL Server 2005를 사용하고 있습니다. 집계 정보가 포함 된 두 개의 테이블이 있습니다. 정보는 지속적으로 업데이트되어 하루에 거의 5GB의 로그 데이터를 생성합니다. (이것은 전체 데이터베이스보다 큽니다!) 롤백이 실제로 필요하지 않기 때문에 이러한 테이블에 대한 로깅을 비활성화하고 싶습니다. 그러나 데이터베이스의 다른 테이블에 계속 로깅하고 싶습니다.

데이터베이스 내의 특정 테이블에서 로깅을 비활성화 할 수 있습니까? 그렇지 않은 경우 두 테이블을 동일한 스키마에 배치 한 다음 스키마에서 로깅을 비활성화 할 수 있습니까? 두 테이블을 별도의 데이터베이스로 이동하고 로깅을 비활성화하는 유일한 옵션입니까?

업데이트 : 이 테이블에 활동을 기록 할 필요가없는 이유를 설명 할 것입니다.

두 테이블은 GPS 데이터로 채워져있어 상당히 커집니다. 첫 번째 테이블은 필드에있는 6 개의 Android 테이블에서 원시 위치를 캡처합니다. 각 태블릿의 새로운 데이터는 5-10 초마다 제공됩니다. 그런 다음 해당 정보는 locationA, locationB, travelTime으로 집계됩니다. 목표는 실제 주행 데이터를 기반으로 모든 위치 사이에서 최단 이동 시간을 갖는 것입니다. 데이터는 작은 도시에만 해당되며 소수점 이하 4 자리까지만 정확하므로 관리가 가능합니다. 그러나 새로운 원시 데이터가 들어 오면 업데이트해야하는 이동 시간과 삽입해야하는 새로운 이동 시간이 있습니다.

원시 데이터가 집계되면 제거됩니다. 우리는 더 긴 여행 시간으로 거꾸로 가지 않기 때문에 이러한 테이블에서 롤백이 그다지 중요하지 않은 이유입니다.


답변:


8
  • 데이터베이스 내의 특정 테이블에서 로깅을 비활성화 할 수 있습니까?
  • 두 테이블을 동일한 스키마에 배치 한 다음 스키마에서 로깅을 비활성화 할 수 있습니까?
  • 두 테이블을 별도의 데이터베이스로 이동하고 로깅을 비활성화하는 유일한 옵션입니까?

사용자 작업 기록은 비활성화 할 수 없습니다.

라는 작업의 클래스가 최소한-기록 작업 만 트랜잭션이 롤백 될 수 있도록 다시 (또는 롤백 할 수있는 반대로 감기 ). 그러나 당신이하고있는 일이 적용하기위한 기준을 충족시키는 것처럼 들리지 않으며, 이것이 문제를 해결할 것이라고 생각하지 않습니다.

SQL Server 솔루션은 SIMPLE복구 결과 데이터베이스와는 별도로 집계 결과 데이터베이스와 별도로 복구 의 새 데이터베이스에 준비 테이블을 랜딩하는 것 FULL입니다. 이렇게하면 로깅 볼륨 이 줄어들지는 않지만 데이터로드로 생성 된 로그 를 백업 할 필요가 없습니다 . (내 블로그 게시물을 참조하십시오 여기에 로깅에 대해, 그리고 몇 가지 요소는 데이터베이스의 복구 모델을 선택에 참여.)

테이블을 다른 데이터베이스로 분리하면 로그 파일을보다 빠른 I / O 서브 시스템, 즉 로컬로 연결된 솔리드 스테이트 드라이브의 작은 어레이에 랜딩 할 수있는 유연성이 제공됩니다.

또한 SQL Server만으로는이 문제를 해결하기위한 최상의 솔루션이 아닐 수도 있습니다. 특정 테이블에 대한 로깅을 완전히 비활성화하는 기능을 제공하는 다른 RDBMS 솔루션이 있습니다. 다른 시스템에서 데이터를 준비하고 집계 할 수 있으며 결과는 기존 SQL Server 데이터베이스로 병합되어 전체 로깅 및 백업으로 잘 보호됩니다.


@dangowans : 천만에요.
Jon Seigel

3

아니요, 스키마, 테이블 또는 데이터베이스 수준에 관계없이 SQL Server에서 로깅을 방지 할 방법이 없습니다.

사실 스냅 샷 격리 사용시 TempDB와 관련된 버전 저장소 관련 트랜잭션을 제외하고 SQL Server 데이터베이스에서 수정 또는 변경을 수행하는 모든 트랜잭션이 기록됩니다. (트랜잭션 로그에 로깅하면 트랜잭션을 롤백 할 수 있음을 보장합니다. 특정 작업의 경우 복구 모델을 BULK Logged로 변경하여 로깅을 줄일 수 있습니다 (최소 로깅 된 작업이라고 함) --- SQL Server 온라인 설명서 에서 여기 에 대해 자세히 알아볼 수 있습니다.


0

답은 항상 그렇듯이 달려 있습니다.
당신이 말했을 때 :

집계 정보가 포함 된 두 개의 테이블이 있습니다. 정보는 지속적으로 업데이트되고 있습니다

어떤 종류의 집계입니까?
대신 VIEW를 사용하고 업데이트하거나 로깅 할 필요가 없습니다.

이것이 옵션이 아닌 경우 더 짧은 트랜잭션을 사용하고 트랜잭션간에 로그를 백업하십시오.

다른 데이터베이스를 사용하면 보안 관리 오버 헤드 등이 있으며 자체 트랜잭션 로그가 있습니다 (심플 복구 모델을 사용하더라도 로그가 작성되지만 SQL Server는 단순히 로그를 자동으로 자르지 만 디스크 공간을 해제하지는 않습니다). .


발생하는 집계 유형으로 질문을 업데이트했습니다.
dangowans

@dangowans 대량 로그 복구 모델에 대해 생각하고 있습니다. DRP에 특정 시점으로 복원하는 기능이 필요합니까? 복제를 사용합니까? 최소 로그 작업을
Roi Gavish
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.