LightDB - append hint

在 oracle 中插入有两种模式:

  • 传统插入:插入的时候使用表中已有的空闲空间,同时会经过buffer cache,在插入的过程中会维护引用完整性约束
  • direct-path 插入:插入的时候不使用表中已有的空闲空间,直接在已有数据之后追加数据(直接在表的高水位线(HWM)以上插入), 经过buffer cache,直接插入数据文件,并且在插入的过程中不会维护引用完整性约束

可以通过使用 append hint 对insert select 语句使用 direct-path insert
LightDB 从23.4 开始支持 append hint, 但由于LightDB 不支持 direct-path insert, 因此即使使用了hint,也不会起效。目前只是为了兼容这种用法。
下面对使用方法举例:

示例

初始化

create table test_append(key1 int, key2 int, key3 int, key4 int);
create table test_append1(key1 int, key2 int, key3 int, key4 int);

insert into test_append1 values(1,2,3,4);
insert into test_append1 values(11,21,31,41);
insert into test_append1 values(111,211,311,411);

示例

lightdb@test_oracle_pg_hint_plan=# EXPLAIN (COSTS FALSE) insert/*+append */ into test_append select 1, 1, 1, 2 from dual;
LOG:  lt_hint_plan:
used hint:
not used hint:
append
duplication hint:
error hint:

          QUERY PLAN           
-------------------------------
 Insert on test_append @"lt#1"
   ->  Result
(2 rows)

lightdb@test_oracle_pg_hint_plan=# EXPLAIN (COSTS FALSE) insert/*+append */ into test_append select * from test_append1;
LOG:  lt_hint_plan:
used hint:
not used hint:
append
duplication hint:
error hint:

           QUERY PLAN           
--------------------------------
 Insert on test_append @"lt#1"
   ->  Seq Scan on test_append1
(2 rows)

你可能感兴趣的:(lightdb,lightdb,hint,append)