警告
TimescaleDB v2.13 是最后一个为 PostgreSQL 版本 13、14 和 15 提供多节点支持的版本。
此过程在访问节点上使用,以在分布式数据库的数据节点上执行 SQL 命令。例如,一个用例是在分布式数据库中创建所需的角色和权限。
该过程可以事务性地运行分布式命令,因此命令要么在所有地方执行,要么在任何地方都不执行。但是,并非所有 SQL 命令都可以在事务中运行。这可以通过参数 transactional
进行切换。请注意,如果执行不是事务性的,则在一个数据节点上发生故障需要手动处理任何引入的不一致性。
请注意,该命令不在访问节点本身上执行,并且不可能在一个调用中链接多个命令。
重要提示
您不能使用某些 SQL 命令运行 distributed_exec
。例如,ALTER EXTENSION
不起作用,因为它不能在 TimescaleDB 扩展已加载后调用。
名称 | 类型 | 描述 |
---|---|---|
query | TEXT | 要在数据节点上执行的命令。 |
名称 | 类型 | 描述 |
---|---|---|
node_list | ARRAY | 应在其上执行命令的数据节点数组。如果未指定,则默认为所有数据节点。 |
transactional | BOOLEAN | 允许指定语句的执行是否应为事务性的。默认为 TRUE。 |
在分布式数据库的所有数据节点上创建角色 testrole
CALL distributed_exec($$ CREATE USER testrole WITH LOGIN $$);
在两个特定的数据节点上创建角色 testrole
CALL distributed_exec($$ CREATE USER testrole WITH LOGIN $$, node_list => '{ "dn1", "dn2" }');
在所有数据节点上创建表 example
CALL distributed_exec($$ CREATE TABLE example (ts TIMESTAMPTZ, value INTEGER) $$);
在数据节点上创建新数据库 dist_database
,这需要将 transactional
设置为 FALSE
CALL distributed_exec('CREATE DATABASE dist_database', transactional => FALSE);
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。