历史版本查询为何不支持写入到表中呢

【 TiDB 使用环境】Poc
【 TiDB 版本】v7.0.0
TiDB提供了使用 AS OF TIMESTAMP 语法(推荐方式)读取历史数据的方法,但是这个方法只能全表导出到外部文件中,然后再导入到数据库中。为何不支持直接insert into select … from … as of timestamp的方式呢,这样子结合batch on非事务模式可以节省导入导出时间,也更方便操作。

1 个赞

这个时候查的数据是基于过去的时间点的,所有的数据都是,包括你insert数据。。。

当使用这个特性的时候,集群的快照已经切换到历史的版本,历史数据只能提供读操作

我理解的是insert发生的是当前读,与快照读是冲突的。但是如果是单纯的insert select(等特定几个恢复场景) 模式是否可以做到insert快照读兼容呢?

我记得ORACLE是支持,我也建议完善这个功能

where 条件支持的,我测了下你写错了吧
select a,b,c from test as of timestamp ‘2023-05-25 09:55:00’
where a=1;

insert into select 不支持,具体报错:
mysql> insert into test1
→ select a,b,c from test as of timestamp ‘2023-05-25 10:05:00’
→ where a=2;
ERROR 8135 (HY000): can not set different time in the as of

是的,谢谢纠正。