PolarDB PostgreSQL版(兼容Oracle)提供了DBLink功能,您可以通過(guò)DBLink功能實(shí)現(xiàn)跨庫(kù)查詢數(shù)據(jù)。本文介紹如何通過(guò)DBLink跨庫(kù)查詢數(shù)據(jù)。

前提條件

  • 已創(chuàng)建源集群和目標(biāo)集群。具體操作,請(qǐng)參見(jiàn)創(chuàng)建PolarDB PostgreSQL版(兼容Oracle)集群
    說(shuō)明 PolarDB PostgreSQL版(兼容Oracle)的DBLink目前支持如下兩種連接方式:
    • 源數(shù)據(jù)庫(kù)為PolarDB PostgreSQL版(兼容Oracle)集群;目標(biāo)數(shù)據(jù)庫(kù)為PolarDB PostgreSQL版(兼容Oracle)集群。
    • 源數(shù)據(jù)庫(kù)為PolarDB PostgreSQL版(兼容Oracle)集群;目標(biāo)數(shù)據(jù)庫(kù)為ECS自建PostgreSQL數(shù)據(jù)庫(kù)。
  • 已在源集群和目標(biāo)集群中創(chuàng)建數(shù)據(jù)庫(kù)。具體操作,請(qǐng)參見(jiàn)創(chuàng)建數(shù)據(jù)庫(kù)
  • 已在目標(biāo)數(shù)據(jù)庫(kù)中創(chuàng)建表。

注意事項(xiàng)

目前僅支持在源集群上查詢目標(biāo)集群數(shù)據(jù),不支持在目標(biāo)集群上查詢?cè)醇簲?shù)據(jù)。

參數(shù)配置

PolarDB PostgreSQL版(兼容Oracle)提供了polar_enable_pushable_unsafe_collate_remotepolar_enable_pushable_all_any_remote參數(shù),用于提升查詢性能。

  • polar_enable_pushable_unsafe_collate_remote(會(huì)話級(jí)別參數(shù)):支持unsafe collate下推,默認(rèn)打開(kāi)。

    如果關(guān)閉該參數(shù),部分函數(shù)因?yàn)榭紤]collate規(guī)則,不會(huì)主動(dòng)下推。

    • 打開(kāi)命令:
      SET polar_enable_pushable_unsafe_collate_remote = on;
    • 關(guān)閉命令:
      SET polar_enable_pushable_unsafe_collate_remote = off;
  • polar_enable_pushable_all_any_remote(會(huì)話級(jí)別參數(shù)):支持ALL/ANY下推,默認(rèn)打開(kāi)。

    如果關(guān)閉該參數(shù),部分ALL/ANY表達(dá)式則不會(huì)下推。

    • 打開(kāi)命令:
      SET polar_enable_pushable_all_any_remote = on;
    • 關(guān)閉命令:
      SET polar_enable_pushable_all_any_remote = off;

操作步驟

  1. 創(chuàng)建DBLink。
  2. 連接源集群。具體操作,請(qǐng)參見(jiàn)連接數(shù)據(jù)庫(kù)集群
  3. 在源集群上跨庫(kù)查詢數(shù)據(jù)。

    查詢語(yǔ)句如下:

    SELECT * FROM <dbname>@<dblinkname>;
    • <dbname>:目標(biāo)集群的數(shù)據(jù)庫(kù)里的表。
      說(shuō)明 該表必須在DBLink所連接的目標(biāo)數(shù)據(jù)庫(kù)中。
    • <dblinkname>:DBLink名稱。

    您可以在控制臺(tái)查看DBLink名稱和DBLink的目標(biāo)數(shù)據(jù)庫(kù),如下圖所示。

    dblink

示例

在目標(biāo)數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)用于測(cè)試的表test,并在表中插入測(cè)試數(shù)據(jù)。命令如下:

CREATE TABLE test(id int);
INSERT INTO test VALUES(1);

連接源數(shù)據(jù)庫(kù),執(zhí)行如下查詢命令:

SELECT * FROM test@dblinkname;

查詢結(jié)果如下:

 id
----
  1
(1 row)