跳转到主要内容

event_triggers

event_triggers 是控制是否启用事件触发器的 PostgreSQL 开关。
说明

Fact — 官方简述译文:启用事件触发器。

身份

类型 , bool
上游 pg_settings 类型
Context , superuser
超级用户可在运行时修改
单位 ,
原始单位
范围 ,
最后在档版本的原始上下限
枚举值 ,
非枚举类型记为 —
分类 , Client Connection Defaults / Statement Behavior
上游分类
最后 boot 值 , on
on

生命周期

Fact
首次观测 PG17
在档版本 PG17–19 Beta 3
移除版本
引入提交 7750fefdb2b8 — Add GUC for temporarily disabling event triggers
提交日期 2023-09-25
Discussion 讨论 1 · 讨论 2

默认值变迁

PG9.0–19 Beta 3 实测 boot 默认值
版本 原始 boot_val 单位 人类可读值
PG17–19 Beta 3 on on

机制详解

event_triggers:启用事件触发器。该开关会整体禁用所有事件触发器,用于紧急修复;它不是选择性触发策略,并要求较高的 SET 权限。

event_triggers 属于 SUPERUSER 上下文。超级用户或获授相应 SET 权限的角色可在会话内修改,ALTER ROLE 或 ALTER DATABASE 可为未来会话建立默认值。

由于会话状态可能在连接池中残留,角色默认值、SET 权限、RESET 行为与应用取连接钩子都是有效控制边界的一部分。

调优建议

提示

Advice。 以下建议是工作负载起点,必须用真实测量验证。

场景 建议
OLTP 不应调优 event_triggers,也不应把关闭作为常态。只能在受控修复会话中临时关闭,定位故障触发器后立即恢复。
OLAP 保持事件触发器启用;只有文档化批量装载流程评审过所有丢失的审计或 DDL 副作用后才可例外。
小规格 保持默认 on;禁用事件触发器不会节省有意义的资源,却可能静默绕过控制。

Pigsty 取值

以下值来自固定 8 核、32 GiB、100 GiB SSD 夹具,并按 PG19 Beta 3 渲染当前 Pigsty 模板;这不表示 Pigsty 当前支持该历史或测试版本。

模板 有效值 与上游 boot 比较 源表达式
OLTP 未修改
OLAP 未修改
CRIT 未修改
TINY 未修改
注意

Advice — 待人工复核。 当前 Pigsty 模板投影事实:OLTP: PG17–19 Beta 3 未修改;OLAP: PG17–19 Beta 3 未修改;CRIT: PG17–19 Beta 3 未修改;TINY: PG17–19 Beta 3 未修改。 未发现覆盖值,因此不推断 Pigsty 专属理由。

常见坑

  • 只在一个会话中修改 event_triggers,却认为角色默认值、数据库默认值或其他池化会话也已随之改变。
  • 对可改变正确性、策略执行或名称解析的控制项授予过宽 SET 权限。
  • 池化连接交给另一个请求前,没有重置安全敏感的会话值。
  • 没有回滚计划及客户端或运维兼容测试,就全局修改 event_triggers。

search_path · row_security · session_replication_role · restrict_nonsystem_relation_kind · createrole_self_grant

参考资料