全部產品
Search
文件中心

PolarDB:使用DBLink跨庫查詢資料

更新時間:Jul 06, 2024

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_remotepolar_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;

操作步驟

  1. 建立DBLink。
  2. 串連源叢集。具體操作,請參見串連資料庫叢集
  3. 在源叢集上跨庫查詢資料。

    查詢語句如下:

    SELECT * FROM <dbname>@<dblinkname>;
    • <dbname>:目的地組群的資料庫裡的表。
      說明 該表必須在DBLink所串連的目標資料庫中。
    • <dblinkname>:DBLink名稱。

    您可以在控制台查看DBLink名稱和DBLink的目標資料庫,如下圖所示。

    dblink

樣本

在目標資料庫中建立一個用於測試的表test,並在表中插入測試資料。命令如下:

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

串連來源資料庫,執行如下查詢命令:

SELECT * FROM test@dblinkname;

查詢結果如下:

 id
----
  1
(1 row)