Retention 트랜잭션 선택기
트랜잭션 선택기는 선택한 데이터셋의 모든 브랜치에 있는 닫힌 트랜잭션에서 삭제 범위를 좁힙니다. OPEN 트랜잭션은 무시하며 여러 선택기를 쓰면 모든 조건을 충족해야 합니다. 기본 최신 view 보호도 함께 적용됩니다. 보존 개수를 정하는 선택기의 숫자를 삭제할 개수로 해석하면 안 됩니다.
브랜치 조건
Only in branch는 지정한 브랜치에만 존재하는 트랜잭션을 대상으로 합니다. main을 지정했더라도 feature 브랜치와 공유하는 트랜잭션은 해당하지 않습니다. 아래 예시의 첫 두 SNAPSHOT은 feature 브랜치의 근거 트랜잭션이기도 하므로 삭제하지 않습니다.
Not in branch는 지정한 브랜치에 존재하는 트랜잭션을 제외하고 다른 트랜잭션을 선택합니다. 두 선택기 모두 브랜치 이름 하나를 인자로 받습니다.
보존할 트랜잭션 개수
Transaction count는 브랜치의 최신 데이터 포함 트랜잭션 중 지정한 개수를 보존합니다. 여기서 데이터 포함 트랜잭션은 커밋되어 있고 DELETE가 아닌 트랜잭션입니다. SNAPSHOT, APPEND와 UPDATE를 구별하지 않고 셉니다. 중단된 트랜잭션은 보존 개수에 포함되지 않으며 삭제 대상이 됩니다. 다른 선택기와 최신 view 보호 조건은 그대로 적용합니다.
다음은 보존 개수를 2로 지정한 예시입니다. 한 브랜치에서 오래된 트랜잭션이어도 다른 브랜치의 보존 범위 안에 있으면 남을 수 있습니다. 예시의 feature 브랜치는 오래된 트랜잭션이 main의 두 번째 트랜잭션이기도 하므로 세 개가 남습니다. 예시에서 SNAPSHOT이 남는다는 사실을 모든 데이터셋에서 SNAPSHOT 두 개를 보장하는 규칙으로 일반화하면 안 됩니다.
증분 파이프라인에서는 트랜잭션 종류를 구별하지 않는 개수 조건보다 view count를 권장합니다.
보존할 view 개수
View count는 최근 지정 개수의 데이터셋 view에 포함된 트랜잭션을 보존합니다. View에는 커밋한 트랜잭션만 포함되므로 중단된 트랜잭션은 삭제 대상입니다. numViewsToRetain: 1은 최신 view 이전의 트랜잭션과 중단된 트랜잭션을 대상으로 합니다. SNAPSHOT이 최신 view를 시작했다면 그 SNAPSHOT 이전 이력이 이에 해당합니다.
시간과 파생 상태
| 선택기 | 인자와 대상 |
|---|---|
Older than a certain duration | duration보다 오래된 트랜잭션을 선택합니다. |
Has been projected | 모든 projection에 전달된 트랜잭션을 선택하는 고급 옵션입니다. |
Only present in views older than | duration보다 오래된 view에만 존재하는 트랜잭션을 선택합니다. View의 나이는 그 view의 가장 최근 트랜잭션이 닫힌 시각부터 현재까지입니다. 열린 트랜잭션이 있는 view에서는 어떤 트랜잭션도 삭제하지 않습니다. |
Is derived | 빌드가 생성한 트랜잭션을 선택합니다. 수동 업로드나 Data Connection이 만든 트랜잭션은 파생 트랜잭션으로 보지 않습니다. |
활성 view에 파일이 없는 트랜잭션
No files in active view는 최신 view 밖의 트랜잭션과, 최신 view 안에 있더라도 파일이 모두 더 새로운 트랜잭션의 파일로 대체된 트랜잭션을 선택합니다. 후자를 실제 삭제하려면 Allow deletion from latest view도 활성화해야 합니다.
Ignore hidden files를 켜면 이 판단에 데이터 파일만 사용합니다. 숨김 파일이 남아 있어도 데이터 파일이 활성 view에 하나도 남지 않으면 선택될 수 있습니다. 이 옵션이 꺼져 있으면 숨김 파일도 남아 있는 파일로 판단합니다.
숨김 파일은 이름이 .으로 시작하거나, _으로 시작하면서 =을 포함하지 않는 파일입니다. _driver.log는 숨김 파일에 해당합니다. 단순히 _으로 시작하는 모든 파일을 제외하는 규칙은 아닙니다.