使用继承创建的外国 table 卡住了
Foreign table created with inherits stuck
我一直在尝试在我的 PSQL 数据库中创建一个 foreign table。这里的重点是连接来自 2 个不同数据库的相同 steps
table。我想使用 INHERITS
来复制架构。
我在本地有一个 steps
table,在我的 cache_server
上有一个 steps
table(有数百万行)。我试图用以下方法创建外国 table:
CREATE FOREIGN TABLE cache_steps ()
INHERITS (steps)
SERVER cache_server
OPTIONS ( schema_name 'public', table_name 'steps');
问题是当我这样做时,本地步骤 table 变得不可用,没有锁定但它会永远加载,我无法对这个table。我不明白为什么这种继承对我的 steps
table.
有任何影响
如果我使用架构而不是 inherits
创建我的外部 table,一切正常
CREATE FOREIGN TABLE cache_steps (
column1 text,
column2 text
)
SERVER cache_server
OPTIONS ( schema_name 'public', table_name 'steps')
INHERITS
不会复制架构 本身 。相反,它允许您以某种方式构建数据,以防止数据库中常见的 'issues' 继承:
- 数据重复:
parent
的数据存在于每个 child
table 中
- 从
child
到 parent
的外键(例如 Dog.AnimalID -> Animal.Id)
- 一个大 table 里面有所有东西(
parents
和所有类型的 children
)
使用 INHERITS
,Posgres 的引擎负责为您重新加载数据,因此当您查询数据时,看起来您的所有 child
数据都在同一个地方,但实际上它是散布到单独的 table 中,每个都包含一个 child type
的数据,而 parent
只剩下特定于 parents
.
的数据
所以在你的情况下,你的本地步骤 table 没有任何列,因此看起来像你 'inherited schema' 但实际上不是。
您的 table 似乎卡住了,只是因为它从远程服务器加载了数百万行,因此,根据网络状况和您的查询,它可能需要很长时间才能完成return.
进一步阅读参考:https://www.postgresql.org/docs/12/tutorial-inheritance.html
我一直在尝试在我的 PSQL 数据库中创建一个 foreign table。这里的重点是连接来自 2 个不同数据库的相同 steps
table。我想使用 INHERITS
来复制架构。
我在本地有一个 steps
table,在我的 cache_server
上有一个 steps
table(有数百万行)。我试图用以下方法创建外国 table:
CREATE FOREIGN TABLE cache_steps ()
INHERITS (steps)
SERVER cache_server
OPTIONS ( schema_name 'public', table_name 'steps');
问题是当我这样做时,本地步骤 table 变得不可用,没有锁定但它会永远加载,我无法对这个table。我不明白为什么这种继承对我的 steps
table.
如果我使用架构而不是 inherits
创建我的外部 table,一切正常
CREATE FOREIGN TABLE cache_steps (
column1 text,
column2 text
)
SERVER cache_server
OPTIONS ( schema_name 'public', table_name 'steps')
INHERITS
不会复制架构 本身 。相反,它允许您以某种方式构建数据,以防止数据库中常见的 'issues' 继承:
- 数据重复:
parent
的数据存在于每个child
table 中
- 从
child
到parent
的外键(例如 Dog.AnimalID -> Animal.Id) - 一个大 table 里面有所有东西(
parents
和所有类型的children
)
使用 INHERITS
,Posgres 的引擎负责为您重新加载数据,因此当您查询数据时,看起来您的所有 child
数据都在同一个地方,但实际上它是散布到单独的 table 中,每个都包含一个 child type
的数据,而 parent
只剩下特定于 parents
.
所以在你的情况下,你的本地步骤 table 没有任何列,因此看起来像你 'inherited schema' 但实际上不是。
您的 table 似乎卡住了,只是因为它从远程服务器加载了数百万行,因此,根据网络状况和您的查询,它可能需要很长时间才能完成return.
进一步阅读参考:https://www.postgresql.org/docs/12/tutorial-inheritance.html