pg_surgery
对损坏的关系进行手术
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_surgery | 1.0 | ADMIN | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5990 | pg_surgery | 否 | 是 | 否 | 是 | 否 | 否 | - |
| 相关扩展 | pg_catcheck pg_checksums amcheck pg_orphaned pg_pathcheck pageinspect pg_repack lo lolor pg_isok |
|---|
版本
| PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|
| 1.0 | 1.0 | 1.0 | 1.0 | 1.0 |
安装
提示:这是 PostgreSQL 内核自带的 contrib 扩展
SQL
用法
pg_surgery 扩展提供对损坏关系执行底层手术修复的函数。这些是最后手段的工具,误用可能导致数据损坏。
函数
heap_force_kill
将行指针标记为"死亡"而不检查元组,强制移除不可访问的元组。
SQL
SQL
heap_force_freeze
将元组标记为已冻结而不检查元组数据,使可见性信息损坏的元组变为可访问。
SQL
SQL
何时使用
heap_force_kill:当元组因事务状态损坏导致访问错误,且数据可以丢弃时heap_force_freeze:当 VACUUM 因元组的 xmin 早于 relfrozenxid 而失败时,或当元组因可见性信息损坏而不可见时
这些函数在设计上是不安全的,只应在正常恢复方法失败后作为最后手段使用。