PolarDB PostgreSQL版(兼容Oracle)提供了DBLink功能,您可以通过DBLink功能实现跨库查询数据。本文介绍如何通过DBLink跨库查询数据。
前提条件
- 已创建源集群和目标集群。具体操作,请参见创建PolarDB PostgreSQL版(兼容Oracle)集群。说明 PolarDB PostgreSQL版(兼容Oracle)的DBLink目前支持如下两种连接方式:
- 源数据库为PolarDB PostgreSQL版(兼容Oracle)集群;目标数据库为PolarDB PostgreSQL版(兼容Oracle)集群。
- 源数据库为PolarDB PostgreSQL版(兼容Oracle)集群;目标数据库为ECS自建PostgreSQL数据库。
- 已在源集群和目标集群中创建数据库。具体操作,请参见创建数据库。
- 已在目标数据库中创建表。
注意事项
目前仅支持在源集群上查询目标集群数据,不支持在目标集群上查询源集群数据。
参数配置
PolarDB PostgreSQL版(兼容Oracle)提供了polar_enable_pushable_unsafe_collate_remote和polar_enable_pushable_all_any_remote参数,用于提升查询性能。
- polar_enable_pushable_unsafe_collate_remote(会话级别参数):支持unsafe collate下推,默认打开。
如果关闭该参数,部分函数因为考虑collate规则,不会主动下推。
- 打开命令:
SET polar_enable_pushable_unsafe_collate_remote = on;
- 关闭命令:
SET polar_enable_pushable_unsafe_collate_remote = off;
- 打开命令:
- polar_enable_pushable_all_any_remote(会话级别参数):支持ALL/ANY下推,默认打开。
如果关闭该参数,部分ALL/ANY表达式则不会下推。
- 打开命令:
SET polar_enable_pushable_all_any_remote = on;
- 关闭命令:
SET polar_enable_pushable_all_any_remote = off;
- 打开命令:
操作步骤
- 创建DBLink。PolarDB PostgreSQL版(兼容Oracle)提供了如下两种创建方式:
- 连接源集群。具体操作,请参见连接数据库集群。
- 在源集群上跨库查询数据。
查询语句如下:
SELECT * FROM <dbname>@<dblinkname>;
<dbname>
:目标集群的数据库里的表。说明 该表必须在DBLink所连接的目标数据库中。<dblinkname>
:DBLink名称。
您可以在控制台查看DBLink名称和DBLink的目标数据库,如下图所示。
示例
在目标数据库中创建一个用于测试的表test
,并在表中插入测试数据。命令如下:
CREATE TABLE test(id int);
INSERT INTO test VALUES(1);
连接源数据库,执行如下查询命令:
SELECT * FROM test@dblinkname;
查询结果如下:
id
----
1
(1 row)