透明网关gcluster_dblink_direct_data_exchange参数设置不同的值差异是什么?

设置为1和设置为0对SQL的支持程度是一样的,dblink的处理流程是不一样的。
说明如下:

gcluster_dblink_direct_data_exchange=1
server会发送select...into server命令给网关,网关转发该命令给源数据库,源数据库直接将数据发送到目标数据库中,数据移动不通过网关。

gcluster_dblink_direct_data_exchange=0
server会发送select 语句给网关,网关会在源数据库上执行该语句,将获取到的结果集insert到目标数据中。
在insert操作时,网关支持两种方式,具体如下:

  • load.data.type=1时,使用JDBC的PreparedStatement执行单条批量insert,该方式的优点是包含特殊字符的数据也可insert,缺点是速度较慢。
  • load.data.type=0时,使用`insert
    ...values(),(),()`形式一次性insert多条数据,该方式的优点是insert速度较单条批量insert速度快,缺点是在拼字符串时无法处理特殊字符。