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. word-制作三线表

    找一个表格或插入一个表格, 找到 [设计] [新建表格样式] [将格式应用于: 整个表格] 点击"框线设置"按钮,在弹出的下拉菜单中分别选择 [上框线] 和 [下框线],然后分别设 ...

  2. MongoDB 的内存使用限制

    本文将简述一下MongoDB的内存限制问题 1. 使用Docker限制 当我们使用docker创建mongo 容器时,可通过使用以下参数,对mongo可以使用的资源进行限制 内存限制 参数 简介 -m ...

  3. python小题目练习(十二)

    题目:如下图所示 代码展示: """Author:mllContent:春节集五福Date:2020-01-17"""import rand ...

  4. java 九九乘法表(for循环)

    package study5ran2yl.study; public class ForDemo01 { public static void main(String[] args) { int h; ...

  5. 漏洞扫描工具nessus、rapid7 insightvm、openvas安装&简单使用

    Rapid7-insightvm 申请试用 申请地址 邮件地址不能用常用邮件,要使用自己域名的邮件,可以使用这个临时邮箱 手机号随便输入,10位以上 提交后会跳转下载页面 安装 安装:./Rapid7 ...

  6. 「Python实用秘技09」更好用的函数运算缓存

    本文完整示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/PythonPracticalSkills 这是我的系列文章「Python实用秘技」的第9期 ...

  7. html元素height(width)是怎么确定的?

    1.若height是确定的(比如height:100px),则height直接可确定(还受min-height,max-height影响,见height,min-height,max-heigth的作 ...

  8. Pandas简单操作(学习总结)

    Pandas 的主要数据结构是 Series (一维数据)与 DataFrame(二维数据),是一个提供高性能.易于使用的数据结构和数据分析工具. 接下来查看Pandas的基本使用: # 导入模块 i ...

  9. 服务器配置IP

    1.服务器系统一般有两个或多个网卡.在企业中一般给服务器网卡配一个可连外网的IP,如172.16.20.22 255.255.255.0 172.16.20.1 方便联网下载安装部分软件,若没有VPN ...

  10. CF708C Centroids(树形DP)

    发现变重心就是往重心上割,所以\(\text{up and down}\),一遍统计子树最大\(size\),一遍最优割子树,\(down\),\(up\)出信息,最后\(DFS\)出可行解 #inc ...