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. Java 泛型中的通配符

    本文内容如下: 1. 什么是类型擦除 2.常用的 ?, T, E, K, V, N的含义 3.上界通配符 < ?extends E> 4.下界通配符 < ?super E> 5 ...

  2. 利用XtraDiagram.DiagramControl进行流程图形的绘制和控制

    DevExpress提供了一个比较强大的图形绘制工具,可以用于绘制各种图形,如流程图.组织机构图等等,本篇随笔介绍XtraDiagram.DiagramControl的使用,以及利用代码对其属性进行控 ...

  3. [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇

    目录 [二进制漏洞]PWN学习之格式化字符串漏洞 Linux篇 格式化输出函数 printf函数族功能介绍 printf参数 type(类型) flags(标志) number(宽度) precisi ...

  4. Jmter入门教程

    Jmter入门教程 本文已同步到公众号,欢迎关注: 1. 简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免 ...

  5. (原创)【MAUI】一步一步实现“悬浮操作按钮”(FAB,Floating Action Button)

    一.前言 MAUI,跨平台的 GUI 框架,基本介绍本文不再赘述. 话不多说,既然可以跨平台,那么我们就来实现一个在移动端很常用的控件:悬浮操作按钮(FAB,Floating Action Butto ...

  6. colab解压.tar.gz文件指令

    !tar -zxvf flower_photos.tar.gz 成功后如图:

  7. charles(CA证书)的app端安装

    在使用charles进行的app抓包的时候势必需要对他进行配置: 1. pc端: 第一步: http请求接收charles > proxy > proxy setting > por ...

  8. Gitlab分支策略建议指南

    本文分支策略为总结各中小型企业常见做法(仅代表个人观点),在下才疏学浅,文章如有缺漏或不当之处,望各位帮忙指正.写此文也十分希望能起抛砖引玉之效. 据我所知,目前大部分无论是按瀑布/敏捷开发模型,就算 ...

  9. npm uninstall和rm直接删除的区别

    结论: 1. npm uninstall会备份包本身依赖的node_modules,rm -f会删除整个目录 2. npm uninstall不会删除被依赖的包.即使显式要删除这个包,但它被依赖不会删 ...

  10. 最著名的著名的比特币BTC钱包地址-中本聪的钱包

    最著名的著名的比特币BTC钱包地址-中本聪的钱包1.比特币创始人中本聪 1PTFYUG6nCzRrByoRfGT5kefUNuZjNF84o这个地址还是比特币的创世地址,比特币从未移动过,其中的50币 ...