原作者:彭冲
- 背景信息
- 前置条件
- 模拟测试
背景信息
闪回查询可以查询过去某个时间点或提交事物号来获取表的某个快照数据,这一特性可用于查看和逻辑重建意外删除或更改的受损数据。
前置条件
- 设置enable_ustore参数为on(默认值为on)
- 创建表时指定使用ustore引擎
- 设置undo_retention_time参数
保留undo旧版本的时间,单位为s,例如3600,一个小时。
模拟测试
下面模拟基于时间点的闪回查询:
首先数据库设置undo_retention_time参数
解释show undo_retention_time;
undo_retention_time
---------------------
1h
(1 row)
接着创建ustore引擎的测试表
create table flashtab(id int,info text) with (storage_type=ustore);
插入三条数据
insert into flashtab values(1,'a'),(2,'b'),(3,'c');
闪回查询目前的精度是3秒,为了防止测试查询过快,休眠3s
select pg_sleep(3);
记录准备删除数据之前的时间
select now();
返回查询结果
2023-03-17 23:21:40.865832-04
(1 row)
模拟删除数据,删除第二条数据
delete from flashtab where id=2 ;
使用闪回查询,时间点为2023-03-17 23:21:40,上面删除之前记录的时间点。
select * from flashtab timecapsule timestamp to_timestamp(‘2023-03-17 23:21:40’,‘YYYY-MM-DD HH24:MI:SS’);
全部查询数据可能很多,也可以使用条件过滤,比如只查上面删除的第二条数据
select * from flashtab timecapsule timestamp to_timestamp('2023-03-17 23:21:40','YYYY-MM-DD HH24:MI:SS') where id=2;
还可以直接把数据恢复到原表
insert into flashtab select * from flashtab timecapsule timestamp to_timestamp('2023-03-17 23:21:40','YYYY-MM-DD HH24:MI:SS') where id=2;
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




