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 的闪回查询的更多相关文章

  1. 【转】FlashBack总结之闪回查询与闪回表

    本文主要介绍利用UNDO表空间的闪回技术,主要包括:闪回表,闪回版本查询,闪回事务查询,闪回查询.这些闪回技术实现从回滚段中读取表中一定时间内操作过的数据,可用来进行数据比对,或者修正意外提交造成的错 ...

  2. 闪回查询(SELECT AS OF)

    使用Flashback Query的场景包括如下: 摘自官档 Recovering lost data or undoing incorrect, committed changes. For exa ...

  3. 【练习】flushback基于时间的闪回查询

    1.创建table t1 :: SCOTT@ORA11GR2>create table t1 as select * from scott.emp; Table created. :: SCOT ...

  4. Oracle Flashback Technologies - 闪回查询

    Oracle Flashback Technologies - 闪回查询 查看表中,某行数据的修改记录 #创建一个表,并插入和修改数据 SQL> create table y3(id )); T ...

  5. oracle闪回查询

    一.引言 程序中用到需要同步oracle更新和删除数据,于是考虑利用oracle的闪回查询机制来实现. 利用该机制首先需要oracle启用撤销表空间自动管理回滚信息,并根据实际情况设置对数据保存的有效 ...

  6. Oracle的回收站和闪回查询机制(二)

    上一篇中讲诉了Oracle中一些闪回查询(Flashback Query),这是利用回滚段信息来恢复一个或一些表到以前的一个时间点(一个快照).要注意的是,Flashback Query仅仅是查询以前 ...

  7. Oracle的回收站和闪回查询机制(一)

    实际工作中,我们经常会遇到一些情况,误删除某些表或某些表的某些记录,这时候就需要我们将这些记录重新插入进去.如何才能解决这个问题呢? Oracle的Flashback query(闪回查询)为我们解决 ...

  8. Oracle 中利用闪回查询确定某表在某时间点之后的修改内容,并恢复至该时间点

    Oracle 中利用闪回查询确定某表在某时间点之后的修改内容: 1.查看 DELETE 及 UPDATE 操作修改的数据: SQL> SELECT * FROM tab AS OF TIMEST ...

  9. Flashback Query、Flashback Table(快速闪回查询、快速闪回表)

    Flashback Query闪回查询 flashback query是基于undo表空间的闪回,与之相关的参数如下: SQL> show parameter undo NAME         ...

随机推荐

  1. 【python基础】第04回 变量常量

    本章内容概要 1. python 语法注释 2. python 语法之变量常量 3. python 基本数据类型(整型(int),浮点型(float),字符串(str)) 本章内容详解 1. pyth ...

  2. Python基础教程:模块重载的五种方法

    环境准备 新建一个 foo 文件夹,其下包含一个 bar.py 文件 $ tree foo foo └── bar.py 0 directories, 1 file bar.py 的内容非常简单,只写 ...

  3. 游戏启动后提示安装HMS Core,点击取消,未再次提示安装HMS Core(初始化失败返回907135003)

    问题描述 我们国内的华为联运游戏集成华为游戏服务SDK 之后,被审核驳回:在未安装或需要更新华为移动服务(HMS Core)的手机上,提示安装华为移动服务,点击取消,未再次提示安装HMS Core. ...

  4. 最小生成树 链式前向星 Prim&Kruskal

    Prim: Prim的思想是将任意节点作为根,再找出与之相邻的所有边(用一遍循环即可),再将新节点更新并以此节点作为根继续搜,维护一个数组:dis,作用为已用点到未用点的最短距离. 证明:Prim算法 ...

  5. Dapr v1.8 正式发布

    Dapr是一套开源.可移植的事件驱动型运行时,允许开发人员轻松立足云端与边缘位置运行弹性.微服务.无状态以及有状态等应用程序类型.Dapr能够确保开发人员专注于编写业务逻辑,而不必分神于解决分布式系统 ...

  6. idea引入fastjson的jar包:ClassNotFound

    idea 手动添加fastjson的jar包时,既在项目依赖里添加了,又在WEB-INF下的lib库里添加了 但是启动后就是加载不到,报错:ClassNotFound 尝试了好久,也参考了网上的许多建 ...

  7. 基于MIndSpore框架的道路场景语义分割方法研究

    基于MIndSpore框架的道路场景语义分割方法研究 概述 本文以华为最新国产深度学习框架Mindspore为基础,将城市道路下的实况图片解析作为任务背景,以复杂城市道路进行高精度的语义分割为任务目标 ...

  8. CF1705A Mark the Photographer 题解

    题意: 给定一队人的身高,将其分成两队,问能否实现前面的人均低于后面的人至少 \(x\) 个单位长度. 做法: 将这队人的身高进行排序,\(h_1 \sim h_n\) 即为第一队,\(h_{n+1} ...

  9. 小A的柱状图_via牛客网

    题目 链接:https://ac.nowcoder.com/acm/contest/28537/Q 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语 ...

  10. python 操作xml、html文件

    简介 在一些项目中可能会使用到解析html文件,尤其是爬虫相关的,需要解析获取到的html内容,通常我们会使用lxml模块去进行html文件的解析. html文件 当前存在一个简单的html < ...