我创建了一个保留天数 = 0 的表,但看起来时间旅行能够获取旧数据。
create table t1 (
name string
)
data_retention_time_in_days = 0;
insert into t1 values ('ABC');
select * from t1; -- ABC
truncate table t1; -- 01b7710a-0001-3451-0005-d21e0002e6b2
select * from t1; -- empty
-- Error: Time travel data is not available for table T1.
select * from t1
before (statement => '01b7710a-0001-3451-0005-d21e0002e6b2');
-- Time travel should start from this point of time onwards,
-- and SHOULD NOT be able to get data prior to this point of time.
alter table t1
set data_retention_time_in_days = 10;
-- HOW IS THIS STEP WORKING?
select * from t1
before (statement => '01b7710a-0001-3451-0005-d21e0002e6b2'); -- ABC, works!!!
谢谢!
这很可能是因为数据从时间旅行转移到故障安全的适当时间尚未发生。 请注意,文档指出此过程可能需要一些时间,因为它是后台进程。
根据文档:
如果“时间旅行”保留期设置为 0,则任何修改或删除的数据都将通过后台进程移至故障安全状态(对于永久表)或删除(对于临时表)。这可能需要很短的时间才能完成。在此期间,即使时间旅行保留期为 0 天,表存储指标中的 TIME_TRAVEL_BYTES 也可能包含非零值。