ALTER TABLE ... TTL
ALTER TABLE ... TTL
오래된 데이터 관리를 위해 TTL을 사용하는 방법에 대한 자세한 내용은 Manage Data with TTL 사용자 가이드를 참고하세요. 아래 문서는 기존 TTL 규칙을 수정하거나 제거하는 방법을 보여줘요.
출처: 문서
본문
MODIFY TTL
다음 형태의 요청으로 테이블 TTL을 변경할 수 있어요.
ALTER TABLE [db.]table_name [ON CLUSTER cluster] MODIFY TTL ttl_expression;
REMOVE TTL
다음 쿼리로 테이블에서 TTL 속성을 제거할 수 있어요.
ALTER TABLE [db.]table_name [ON CLUSTER cluster] REMOVE TTL
Example
테이블 TTL을 가진 테이블을 생각해 봐요.
CREATE TABLE table_with_ttl
(
event_time DateTime,
UserID UInt64,
Comment String
)
ENGINE MergeTree()
ORDER BY tuple()
TTL event_time + INTERVAL 3 MONTH
SETTINGS min_bytes_for_wide_part = 0;
INSERT INTO table_with_ttl VALUES (now(), 1, 'username1');
INSERT INTO table_with_ttl VALUES (now() - INTERVAL 4 MONTH, 2, 'username2');
OPTIMIZE를 실행해 TTL 정리를 강제로 수행해요.
OPTIMIZE TABLE table_with_ttl FINAL;
SELECT * FROM table_with_ttl FORMAT PrettyCompact;
두 번째 행이 테이블에서 삭제되었어요.
┌─────────event_time────┬──UserID─┬─────Comment──┐
│ 2020-12-11 12:44:57 │ 1 │ username1 │
└───────────────────────┴─────────┴──────────────┘
이제 다음 쿼리로 테이블 TTL을 제거해요.
ALTER TABLE table_with_ttl REMOVE TTL;
삭제된 행을 다시 삽입하고 OPTIMIZE로 TTL 정리를 다시 강제로 수행해요.
INSERT INTO table_with_ttl VALUES (now() - INTERVAL 4 MONTH, 2, 'username2');
OPTIMIZE TABLE table_with_ttl FINAL;
SELECT * FROM table_with_ttl FORMAT PrettyCompact;
TTL이 더 이상 없으므로 두 번째 행은 삭제되지 않아요.
┌─────────event_time────┬──UserID─┬─────Comment──┐
│ 2020-12-11 12:44:57 │ 1 │ username1 │
│ 2020-08-11 12:44:57 │ 2 │ username2 │
└───────────────────────┴─────────┴──────────────┘
See Also
- TTL-expression에 대한 자세한 내용.
- TTL이 있는 컬럼 수정.