Postgresql

將 IMPORT FOREIGN SCHEMA 與 Greenplum 數據庫一起使用

  • March 2, 2022

我已經設置了一個 PostgreSQL 12 數據庫並試圖連接到一個 Greenplum 數據庫以創建代理表。我能夠連接到 Greenplum db,但是當我嘗試使用 IMPORT FOREIGN SCHEMA 命令時出現錯誤。

IMPORT FOREIGN SCHEMA remote_schema FROM SERVER "remote_server" INTO schema_test_1;

返回:

   ERROR:  Greenplum Database does not support REPEATABLE READ transactions. (variable.c:570)
CONTEXT:  remote SQL command: START TRANSACTION ISOLATION LEVEL REPEATABLE READ
SQL state: XX000

我讀到Greenplum不支持REPEATABLE READ,而是使用SERIALIZE。有沒有辦法編輯 IMPORT FOREIGN SCHEMA 命令,以便我可以用 SERIALIZE 替換 REPEATABLE READ?

我正在使用 PGadmin 4。

更新:

我發現如果我將命令寫成完整的事務並在任何命令之前包含以下內容,我可以讓命令工作:

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

有沒有辦法將此設置為通過外部伺服器的所有事務的預設值?

不,那是做不到的。您必須使用聽說過的不太古老的 PostgreSQL 分支REPEATABLE READ

為了使它工作,你必須修改 PostgreSQL 原始碼,但如果你這樣做,你應該SERIALIZABLE只使用 Greenplum。

根據 PostgreSQL 9.5 文件的 F.31.3:

當本地事務具有 SERIALIZABLE 隔離級別時,遠端事務使用 SERIALIZABLE 隔離級別;否則它使用 REPEATABLE READ 隔離級別。

如果將 postgresql.conf 文件更改為

default_transaction_isolation = 'SERIALIZABLE'

與外部伺服器通信時,它將使用 SERIALIZABLE 副 REPEATABLE READ 事務隔離。

對外部伺服器的查詢現在可以正常工作,包括 IMPORT FOREIGN SCHEMA。

引用自:https://dba.stackexchange.com/questions/252983