KingbaseES 的闪回查询
KingbaseES V008R006C006B0013版本新增支持闪回查询,闪回版本查询、闪回表到指定时间点。旧版本已支持闪回回收站技术。
- 闪回技术(闪回查询和闪回表到指定时间点)可以通过时间戳和CSN(commit sequence number)两种方式进行。
- 两种方式目前都需要依赖提交的时间戳,因此需要开启track_commit_timestamp这个参数。另外闪回查询还需要开启kdb_flashback.enable_flashback_query(新版本已默认开启)的参数。
- 这里解释下时间戳和 CSN 两个快照指定的方式,时间戳即 timestamp 用户可以在闪回查询的快照时间表达式里指定任意一个有效的时间戳。如果允许闪回查询,那么将返回该时刻能够可见的历史快照的数据。
CSN 是提交顺序号,第一个有效的 CSN 为 65536000000,CSN 随着提交线性增加。因此如果用户指定一个有效的 CSN,比如 65536000160,那么闪回查询将基于这个 CSN 提交号构建历史快照。 - 闪回查询技术有一定的限制,在数据进行深度清理后和部分 schema change 后将拒绝闪回查询。
闪回查询
create table t1(id int, name varchar(100));
insert into t1 values(1, 'AA');
insert into t1 values(2, 'BB');
insert into t1 values(3, 'CC');
test=# select * from t1;
id | name
----+------
1 | AA
2 | BB
3 | CC
(3 行记录)
在更新前,记录下时间
test=# select now();
now
-------------------------------
2022-08-05 14:22:30.617930+08
(1 行记录)
假设误操作更新了全表数据
test=# update t1 set name = null ;
UPDATE 3
test=# select * from t1;
id | name
----+------
1 |
2 |
3 |
(3 行记录)
使用闪回查询查历史快照
test=# select * from t1 as of timestamp to_timestamp('2022-08-05 14:22:30', 'yyyy-mm-dd hh24:mi:ss');
id | name
----+------
1 | AA
2 | BB
3 | CC
(3 行记录)
使用csn进行闪回查询示例
test=# select versions_startscn, versions_endcsn, * from t1 versions between csn minvalue and maxvalue;
versions_startscn | versions_endcsn | id | name
-------------------+-----------------+----+------
65536000009 | 65536000012 | 1 | AA
65536000010 | 65536000012 | 2 | BB
65536000011 | 65536000012 | 3 | CC
65536000012 | | 1 |
65536000012 | | 2 |
65536000012 | | 3 |
(6 行记录)
test=# select * from t1 as of csn 65536000011;
id | name
----+------
1 | AA
2 | BB
3 | CC
(3 行记录)
使用闪回表的功能对表进行恢复
test=# select * from t1 ;
id | name
----+------
1 |
2 |
3 |
(3 行记录)
test=# flashback table t1 to csn 65536000011;
FLASHBACK TABLE
test=#
test=#
test=# select * from t1;
id | name
----+------
1 | AA
2 | BB
3 | CC
(3 行记录)
闪回查询的一些限制
- 闪回查询和闪回表技术依赖于历史的数据,如果历史数据因为 vacuum、truncate、rewrite 等操作被回收掉,那么会导致无法闪回到这些操作之前的时刻。
因此推荐用户在期望使用闪回查询的时候对 vacuum相关参数做一定的调整(关闭表级的 autovacuum, 推荐调大 vacuum_defer_cleanup_age 的值以降低历史数据被回收的机会)。 - 目前闪回查询和闪回表技术在 vacuum、truncate、和部分 ddl 之后将不允许进行闪回到这些操作之前。
- 闪回查询应用于视图或者物化视图里面应该尽量避免对于常量时间戳和CSN的使用,可能会引发dump和restore的失败
KingbaseES 的闪回查询的更多相关文章
- 【转】FlashBack总结之闪回查询与闪回表
本文主要介绍利用UNDO表空间的闪回技术,主要包括:闪回表,闪回版本查询,闪回事务查询,闪回查询.这些闪回技术实现从回滚段中读取表中一定时间内操作过的数据,可用来进行数据比对,或者修正意外提交造成的错 ...
- 闪回查询(SELECT AS OF)
使用Flashback Query的场景包括如下: 摘自官档 Recovering lost data or undoing incorrect, committed changes. For exa ...
- 【练习】flushback基于时间的闪回查询
1.创建table t1 :: SCOTT@ORA11GR2>create table t1 as select * from scott.emp; Table created. :: SCOT ...
- Oracle Flashback Technologies - 闪回查询
Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...
- oracle闪回查询
一.引言 程序中用到需要同步oracle更新和删除数据,于是考虑利用oracle的闪回查询机制来实现. 利用该机制首先需要oracle启用撤销表空间自动管理回滚信息,并根据实际情况设置对数据保存的有效 ...
- Oracle的回收站和闪回查询机制(二)
上一篇中讲诉了Oracle中一些闪回查询(Flashback Query),这是利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照).要注意的是,Flashback Query仅仅是查询以前 ...
- Oracle的回收站和闪回查询机制(一)
实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...
- Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点
Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...
- Flashback Query、Flashback Table(快速闪回查询、快速闪回表)
Flashback Query闪回查询 flashback query是基于undo表空间的闪回,与之相关的参数如下: SQL> show parameter undo NAME ...
随机推荐
- 重学ES系列之Set实现数组去重、交集、并集、差集
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 10.2 如何运行Android项目到Android Studio自带模拟器
Android开发一般都可以将应用运行到模拟器查看效果,除非特殊项目要用到真机,所以我们这里先讲解如何将项目运行到模拟器,以校验我们的开发环境以及创建的项目是否有问题. 创建模拟器 点击"C ...
- Day02 HTML语法
有两种类型的标签 双标记<标记名>内容</标记名> 单标记<标记名/> 属性: 对标签的描述--属性,由属性名和属性值组成 <标记名 属性名 = " ...
- Ubuntu安装python各版本
编译安装的话,之前遇到过很多小问题,感觉还是通过添加这个ppa方式装的比较稳,缺点是可能安装的比较慢,可配合proxychain4 sudo apt install software-properti ...
- IDea折叠模块快捷键-*04
如何折叠IntelliJ IDEA代码片段 IntelliJ IDEA 快捷键说明大全(转载) idea 字体_IDEA 新手实用插件分享:让你的 IDEA 逼格瞬间提升
- 机器学习-Kmeans
一.什么是聚类算法? 1.用于发现共同的群体(cluster),比如:邮件聚类.用户聚类.图片边缘. 2.聚类唯一会使用到的信息是:样本与样本之间的相似度(跟距离负相关) 给定N个训练样本(未标记的) ...
- day02-2
JAVA入门 1.C&&C++ 1972年C诞生 贴近硬件,运行极快,效率极高 操作系统,编译器,数据库,网络系统等 指针和内存管理 1982年C++诞生 面向对象 兼容C 图形领域. ...
- Android多版本flavor配置之资源文件和清单文件合并介绍
知识背景 Android studio升级到3.0之后,gradle增加了多维度管理配置,便于同一个项目中创建应用的不同版本,分别管理依赖项并签署配置.创建产品风味与创建构建类型类似:只需将它们添加到 ...
- Modbus的设备怎么对接华为云 使用金鸽BL100只需要5步
BL100是一款高性价比的Modbus转MQTT网关支持一键对接阿里云.华为云. BL100将Modbus串口设备的数据上传至华为云只需要简单五步 第一步.首先将Modbus的设备通过RS485接上M ...
- 【ASP.NET Core】选项类的依赖注入
咱们继续上一个话题.先简单复习一下,根据老周前面文章的介绍,选项类体系的基本套路是通过 IOptionsFactory 来创建选项类实例的.而我们在服务容器(IServiceCollection)上是 ...