debug_print_plan 是一个 配置参数,用于控制是否记录查询计划。
debug_print_plan 在 PostgreSQL 7.1 中添加。
默认值
debug_print_plan 的默认值为:off。
按 PostgreSQL 版本详细信息
debug_print_plan (PostgreSQL 19)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 18)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 17)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 16)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 15)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 14)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 13)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 12)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 11)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 10)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 9.6)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 9.5)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 | |
| 需要重启 | false |
文档: debug_print_plan
debug_print_plan (PostgreSQL 9.4)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 |
文档: debug_print_plan
debug_print_plan (PostgreSQL 9.3)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 |
文档: debug_print_plan
debug_print_plan (PostgreSQL 9.2)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 |
文档: debug_print_plan
debug_print_plan (PostgreSQL 9.1)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 |
文档: debug_print_plan
debug_print_plan (PostgreSQL 9.0)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 |
文档: debug_print_plan
debug_print_plan (PostgreSQL 8.4)
| 设置 | off |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 记录每个查询的执行计划。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 | |
| 枚举值 | |
| 启动值 | off |
| 重置值 | off |
| 源文件 | |
| 源行 |
文档: debug_print_plan
debug_print_plan (PostgreSQL 8.3)
| 设置 | |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 将执行计划打印到服务器日志。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档: debug_print_plan
debug_print_plan (PostgreSQL 8.2)
| 设置 | |
| 单位 | |
| 类别 | 报告和日志记录 / 记录什么 |
| 简短描述 | 将执行计划打印到服务器日志。 |
| 扩展描述 | |
| 上下文 | user |
| 变量类型 | bool |
| 来源 | 默认 |
| 最小值 | |
| 最大值 |
文档: debug_print_plan
变更历史
- PostgreSQL 8.4
- 输出显示在
LOG消息级别(之前是DEBUG1)(提交 9650830b)
- 输出显示在
- PostgreSQL 7.1
- 添加于(提交 6a68f426)
示例
启用了 debug_print_plan 的任意查询(此处为插入到分区表的 INSERT)的示例输出
[2020-08-16 15:10:11 UTC] psql postgres postgres LOG: 00000: statement: INSERT INTO part_parent values(1,'foo') returning *;
[2020-08-16 15:10:11 UTC] psql postgres postgres LOCATION: exec_simple_query, postgres.c:1044
[2020-08-16 15:10:11 UTC] psql postgres postgres LOG: 00000: plan:
[2020-08-16 15:10:11 UTC] psql postgres postgres DETAIL: {PLANNEDSTMT
:commandType 3
:queryId 0
:hasReturning true
:hasModifyingCTE false
:canSetTag true
:transientPlan false
:dependsOnRole false
:parallelModeNeeded false
:jitFlags 0
:planTree
{MODIFYTABLE
:startup_cost 0.00
:total_cost 0.01
:plan_rows 1
:plan_width 86
:parallel_aware false
:parallel_safe false
:plan_node_id 0
:targetlist (
{TARGETENTRY
:expr
{VAR
:varno 1
:varattno 1
:vartype 23
:vartypmod -1
:varcollid 0
:varlevelsup 0
:varnosyn 1
:varattnosyn 1
:location 51
}
:resno 1
:resname id
:ressortgroupref 0
:resorigtbl 16490
:resorigcol 1
:resjunk false
}
{TARGETENTRY
:expr
{VAR
:varno 1
:varattno 2
:vartype 1043
:vartypmod 36
:varcollid 100
:varlevelsup 0
:varnosyn 1
:varattnosyn 2
:location 51
}
:resno 2
:resname val
:ressortgroupref 0
:resorigtbl 16490
:resorigcol 2
:resjunk false
}
)
:qual <>
:lefttree <>
:righttree <>
:initPlan <>
:extParam (b)
:allParam (b)
:operation 3
:canSetTag true
:nominalRelation 1
:rootRelation 1
:partColsUpdated false
:resultRelations (i 1)
:resultRelIndex 0
:rootResultRelIndex 0
:plans (
{RESULT
:startup_cost 0.00
:total_cost 0.01
:plan_rows 1
:plan_width 86
:parallel_aware false
:parallel_safe false
:plan_node_id 1
:targetlist (
{TARGETENTRY
:expr
{CONST
:consttype 23
:consttypmod -1
:constcollid 0
:constlen 4
:constbyval true
:constisnull false
:location 31
:constvalue 4 [ 1 0 0 0 0 0 0 0 ]
}
:resno 1
:resname id
:ressortgroupref 0
:resorigtbl 0
:resorigcol 0
:resjunk false
}
{TARGETENTRY
:expr
{CONST
:consttype 1043
:consttypmod 36
:constcollid 100
:constlen -1
:constbyval false
:constisnull false
:location -1
:constvalue 7 [ 28 0 0 0 102 111 111 ]
}
:resno 2
:resname val
:ressortgroupref 0
:resorigtbl 0
:resorigcol 0
:resjunk false
}
)
:qual <>
:lefttree <>
:righttree <>
:initPlan <>
:extParam (b)
:allParam (b)
:resconstantqual <>
}
)
:withCheckOptionLists <>
:returningLists ((
{TARGETENTRY
:expr
{VAR
:varno 1
:varattno 1
:vartype 23
:vartypmod -1
:varcollid 0
:varlevelsup 0
:varnosyn 1
:varattnosyn 1
:location 51
}
:resno 1
:resname id
:ressortgroupref 0
:resorigtbl 16490
:resorigcol 1
:resjunk false
}
{TARGETENTRY
:expr
{VAR
:varno 1
:varattno 2
:vartype 1043
:vartypmod 36
:varcollid 100
:varlevelsup 0
:varnosyn 1
:varattnosyn 2
:location 51
}
:resno 2
:resname val
:ressortgroupref 0
:resorigtbl 16490
:resorigcol 2
:resjunk false
}
))
:fdwPrivLists (<>)
:fdwDirectModifyPlans (b)
:rowMarks <>
:epqParam 0
:onConflictAction 0
:arbiterIndexes <>
:onConflictSet <>
:onConflictWhere <>
:exclRelRTI 0
:exclRelTlist <>
}
:rtable (
{RTE
:alias <>
:eref
{ALIAS
:aliasname part_parent
:colnames ("id" "val")
}
:rtekind 0
:relid 16490
:relkind p
:rellockmode 3
:tablesample <>
:lateral false
:inh false
:inFromCl false
:requiredPerms 3
:checkAsUser 0
:selectedCols (b 8 9)
:insertedCols (b 8 9)
:updatedCols (b)
:extraUpdatedCols (b)
:securityQuals <>
}
{RTE
:alias <>
:eref
{ALIAS
:aliasname *RESULT*
:colnames <>
}
:rtekind 8
:lateral false
:inh false
:inFromCl false
:requiredPerms 0
:checkAsUser 0
:selectedCols (b)
:insertedCols (b)
:updatedCols (b)
:extraUpdatedCols (b)
:securityQuals <>
}
)
:resultRelations (i 1)
:rootResultRelations (i 1)
:appendRelations <>
:subplans <>
:rewindPlanIDs (b)
:rowMarks <>
:relationOids (o 16490)
:invalItems <>
:paramExecTypes (o 0)
:utilityStmt <>
:stmt_location 0
:stmt_len 52
}
[2020-08-16 15:10:11 UTC] psql postgres postgres LOCATION: elog_node_display, print.c:85
参考资料
- PostgreSQL 文档: debug_print_plan
