TTL 정보

개요

TTL(수명)을 사용하면 데이터베이스 관리자가 Cloud Spanner 테이블에서 주기적으로 데이터를 삭제하도록 정책을 설정할 수 있습니다. 불필요한 데이터 삭제:

  • 저장용량 및 백업 비용을 절감합니다.
  • 데이터베이스가 쿼리를 위해 스캔해야 하는 행의 수를 줄여 쿼리 성능이 향상될 수 있습니다.
  • 특정 데이터 유형에서 보관 기간을 제한하는 규제 또는 산업 지침을 준수하는 데 도움이 됩니다.

TTL은 정기적인 정리 활동에 적합합니다. 백그라운드에서 계속 실행되며 적격한 데이터를 주기적으로 일괄 삭제합니다. 데이터는 일반적으로 만료일로부터 72시간 이내에 삭제됩니다. TTL은 삭제 대상이 되어도 데이터를 즉시 무효화하거나 쿼리에서 숨기지 않습니다.

또 다른 백그라운드 압축 프로세스는 일반적으로 7일 이내에 삭제된 행에서 저장용량을 재확보합니다.

TTL은 다른 데이터베이스 활동에 미치는 영향을 최소화하도록 설계되었습니다. 최종 사용자 쿼리보다 작업을 보다 효율적으로 병렬화하고 엔드 투 엔드 정리를 보장하는 재시도 로직을 포함합니다.

TTL 작동 방식

데이터베이스 소유자가 데이터베이스 스키마에서 행 삭제 정책을 정의하여 테이블에 TTL을 설정합니다. 각 테이블에는 자체 정책이 있을 수 있습니다. 테이블당 하나의 행 삭제 정책만 지정할 수 있습니다.

행 삭제 정책은 마지막 업데이트 후 30일 등과 같이 행을 삭제할 수 있는 시간을 결정하도록 타임스탬프간격을 지정합니다. 실제 구문은 TTL 작업을 참조하세요.

백그라운드 시스템 프로세스는 매일 적격한 행을 확인합니다. 내부에서 데이터가 저장되는 위치에 가깝게 실행되는 배치의 실제 삭제를 병렬 처리합니다. 각 배치는 일관된 타임스탬프에서 자체 트랜잭션으로 실행됩니다. 따라서 색인 및 인터리브 처리된 하위 요소와 함께 지정된 특정 배치의 행은 원자적으로 삭제됩니다. 그러나 일괄 삭제는 서로 다른 트랜잭션에서 수행됩니다.

이는 비동기 백그라운드 프로세스이므로 자격 요건과 삭제 시점 사이에 지연이 발생합니다. 일반적으로 지연 시간은 72시간 미만입니다. 따라서 TTL이 만료된 후 최대 3일 동안 행이 테이블에 유지될 수 있습니다. 예를 들어 4일보다 오래된 행을 삭제하는 행 삭제 정책이 있는 테이블에는 최대 7일 전 행과 삭제 불가능한 행이 포함될 수 있습니다.

백업 및 TTL

백업 복원

백업에서 데이터베이스를 복원하면 소스 데이터베이스에 구성되었던 행 삭제 정책이 자동으로 삭제됩니다. 이렇게 하면 백업이 복원되는 즉시 Cloud Spanner가 만료된 데이터를 삭제하지 않도록 방지됩니다. 수동으로 행 삭제 정책을 다시 만들어야 합니다.

데이터 일관성

백업은 특정 시점에 수행된 데이터에 대한 일관적인 스냅샷입니다. 마찬가지로 Dataflow 내보내기 작업은 고정된 타임스탬프에서 전체 테이블을 읽습니다. TTL 가비지는 백그라운드에서 적격한 행을 지속적으로 수집합니다. TTL에서 발행된 각 DELETE에는 사용자 트랜잭션과 동일한 방식으로 타임스탬프가 할당됩니다. 백업은 타임스탬프가 백업 시간보다 최신인 DELETE를 포함하지 않습니다. 백업에는 TTL 삭제 대상이 될 수 있지만 아직 TTL이 완료되지 않은 행이 포함됩니다.