j.jev4pg使用文档
并行执行计划
原生扩展预览

并行执行计划

开发预览原生功能需要开发版本,当前支持 Linux 上的 PostgreSQL 17。

原生阶段计划把 SQL、语义判断和条件分支放入同一个有向无环图(DAG)。有依赖的工作按顺序执行,独立的语义阶段共享调度和预算。

调用入口#

jev_native.execute_plan(plan, options) 接收结构化计划。计划声明目标阶段、各阶段的 SQL、输出字段及依赖;执行时应使用 REPEATABLE READ 或 SERIALIZABLE 事务。

字段声明包含类型、可空性和键等信息,运行时会检查实际输出是否满足要求。描述性标签和说明不会自动变成可执行规则。

先计算,再判断#

启用原生引擎后,应用可以把受支持的 CTE 和派生表语义查询编译为共享计划。例如,先按账户合并消息,再判断整体内容:

sql
WITH account_text AS (
  SELECT account_id, STRING_AGG(body, E'\n') AS description
  FROM messages
  GROUP BY account_id
)
SELECT account_id
FROM account_text
WHERE SEMANTIC(description, '这些消息描述了尚未解决的求助请求。');

SQL 中的 messages 需要已登记并获准访问。这段示例通过应用 SQL 接口编译;直接调用原生扩展时使用 execute_plan 的结构化参数。

共享 CTE 只物化一次,独立分支可以并发。后续判断只需投影必要上下文,精确计算始终由 PostgreSQL 执行。

条件与完整性#

CASE 可以把语义工作限定到确实需要它的行。精确汇总必须等待所需判断全部确定。如果证据不完整,目标保持 NOT_EVALUATED 并附带原因,不能返回一个看似完整的零计数。

结果保留各阶段回执、共享用量、策略和完成顺序。已完整执行但没有匹配行,与尚未完成的查询是两种不同状态。

支持范围#

当前路径支持非相关的关联、聚合、窗口和集合操作。表达式应先在前序 SELECT 中命名,再用作语义判断对象。递归 CTE、相关或标量子查询、持续维护的特征和语义写入不属于此路径的支持范围。

本页介绍用法与注意事项。完整参数及详细约定请参阅对应英文文档。