VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

SNAPSHOT

功能描述

针对多用户情况下,对数据进行统一的版本控制。

注意事项

  • 当快照选用增量存储方式时,各个快照中具有依赖关系。删除快照需要按照依赖顺序进行删除。

  • snapshot特性用于团队不同成员间维护数据,涉及管理员和普通用户之间的数据转写。所以在私有用户、三权分立(enable_separation_of_duty=ON)等状态下,数据库不支持snapshot功能特性。

  • 当需要稳定可用的快照用于AI训练等任务时,用户需要将快照发布。

  • 本特性相关的GUC参数有:

语法格式

创建快照

可以采用CREATE SNAPSHOT ...AS以及CREATE SNAPSHOT ... FROM语句创建数据表快照。

  • CREATE SNAPSHOT AS

    CREATE SNAPSHOT <qualified_name> [@ <version | ident | sconst>]
    [COMMENT IS <sconst>}
    AS query;
    
  • CREATE SNAPSHOT FROM

    CREATE SNAPSHOT <qualified_name> [@ <version | ident | sconst>]
      FROM @ <version | ident | sconst>
      [COMMENT IS <sconst>}
          USING (
          { INSERT [INTO SNAPSHOT] …
            | UPDATE [SNAPSHOT] [AS <alias>] SET … [FROM …] [WHERE …]
            | DELETE [FROM SNAPSHOT] [AS <alias>] [USING …] [WHERE …]
            | ALTER [SNAPSHOT] { ADD … | DROP … } [, …]
        } [; …]
      );
    

删除快照

PURGE SNAPSHOT <qualified_name> @ <version | ident | sconst>;

快照采样

SAMPLE SNAPSHOT <qualified_name> @ <version | ident | sconst>
    [STRATIFY BY attr_list]
    { AS <label> AT RATIO <num> [COMMENT IS <comment>] } [, …]

快照发布

PUBLISH SNAPSHOT <qualified_name> @ <version | ident | sconst>;

快照存档

ARCHIVE SNAPSHOT <qualified_name> @ <version | ident | sconst>;

参数说明

  • qualified_name

    创建snapshot的名称。

    取值范围:字符串,需要符合标识符命名规则。

  • version

    (可省略)snapshot的版本号,当省略设置。系统会自动顺延编号。

    取值范围:字符串,数字编号配合分隔符。

  • alias

    对当前对象取的别名。

    取值范围:字符串,需要符合标识符命名规则。

  • attr_list

    目标对象的list集合。

    取值范围:字符串,需要符合标识符命名规则。

  • num

    指定的比例值。

    取值范围:数字。

示例

1、创建测试表。

create table t1(id int,name text);

2、创建新快照s1。

create snapshot s1@1.0 comment is 'first version' as select * from t1;

3、从现有快照创建快照修订。

create snapshot s1@3.0 from @1.0 comment is 'inherits from @1.0' using (INSERT VALUES(6,6), (7,7); DELETE WHERE id = 1);

返回结果为:

 schema |  name
--------+--------
 public | s1@3.0
(1 row)

4、快照采样。

 sample snapshot s1@3.0 stratify by id as nick at ratio .5;

返回结果为:

 schema |    name
--------+------------
 public | s1nick@3.0
(1 row)

5、发布一个快照。

publish snapshot s1@3.0;

返回结果为:

 schema |  name
--------+--------
 public | s1@3.0
(1 row)

6、存档快照。

archive snapshot s1@3.0;

7、删除一个快照。

purge snapshot s1@3.0;

当快照选用增量存储方式时,各个快照中具有依赖关系。删除快照需要按照依赖顺序进行删除。如本示例中,应按照依赖顺序先删除s1@3.0,再删除s1@1.0,否则将报错。

相关链接