ITPub博客

首页 > 数据库 > 国内数据库 > GBase 8a 数据交互双模式实战:透明网关推送 VS DBLINK 直通的场景选择与性能优化

GBase 8a 数据交互双模式实战:透明网关推送 VS DBLINK 直通的场景选择与性能优化

原创 国内数据库 作者:GBASE南大通用 时间:2025-06-16 15:26:28 0 删除 编辑

数据推送和直通模式

支持insert …select语句的目标表为dblink远端表,支持通过 insert …select 语句将本地数据推送到远端;

本地数据推送到远端oracle表时需注意:oracle字符类型是字节为单位,而gbase字符类型是字符为单位,所以gbase源表和oracle目标表含有相同类型字段char(255)时,该字段的数据推送到oracle可能会出现插入时越界情况;

同时支持passthrough 直通模式,即GCluster不对指定的SQL做语法解析,请求网关直接转发指定的SQL到远端数据库执行,通过 passthrough 模式可实现对远端表进行 insert…values,delete, update 等操作。

数据推送SQL语句

语法与insert into…select..语句相同,支持目标表为dblink远端表,如:

insert into t1@testlink select a, b from t1;

支持指定目标列,如:

insert into t1@testlink(a, b) select a, b from t1;

前提条件:dblink对象对应的网关中的数据源配置的用户需有对目标表的insert 权限。

只支持自动提交模式,不支持分布式事务,若当前执行gcluster的session 状态为非自动提交模式将报错:

Can not join the distributed transaction in session

需保证一条推送SQL语句的原子性,数据要么全部成功推送到远端,要么全部失败。

注意:

GBase 8a MPP Cluster的空串数据通过dblink推送至ORACLE,ORACLE存储为NULL,即ORACLE不区分空串和NULL,用 is null可以查询;

GBase 8a MPP Cluster则区分空串和NULL。

直通模式SQL 语句

请求网关直接转发sql语句到dblink对象对应的远端数据库执行。

语法:

passthrough link DBLINK_NAME using ‘SQL_STATEMENT’;

参数:

DBLINK_NAME为dbink对象的名称;

SQL_STATEMENT为SQL语句,即远端数据库执行的SQL语句;

支持的SQL语句,除以下支持的SQL类型外,其它类型的SQL将报错:

insert into … values…

insert into …select ….

delete

update

truncate

merge

create

drop

示例:

约束与限制:

dblink对象对应的网关中的数据源配置的用户需有相应的 SQL执行权限;

只支持自动提交模式。若当前执行passthrough命令的gclusterd的session 状态为非自动提交模式将报错:

Can not join the distributed transaction in session

不支持 sql_statement 前面有注释。


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69979120/viewspace-3087882/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
GBASE南大通用,致力于成为用户最信赖的数据库产品供应商!

注册时间:2020-07-16

  • 博文量
    1311
  • 访问量
    1288770