pg_upless
检测表上的无用UPDATE
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
pg_upless | 0.0.3 | ADMIN | PostgreSQL | SQL |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 5180 | pg_upless | 否 | 否 | 否 | 是 | 是 | 否 | - |
| 相关扩展 | plpgsql pg_readonly pg_savior safeupdate pg_permissions pgaudit set_user pg_drop_events table_log |
|---|
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | PIGSTY | 0.0.3 | 1817161514 | pg_upless | plpgsql |
| RPM | PIGSTY | 0.0.3 | 1817161514 | pg_upless_$v | - |
| DEB | PIGSTY | 0.0.3 | 1817161514 | postgresql-$v-pg-upless | - |
构建
您可以使用 pig build 命令构建 pg_upless 扩展的 RPM / DEB 包:
pig build pkg pg_upless # 构建 RPM / DEB 包
安装
您可以直接安装 pg_upless 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
pig repo add pgsql -u # 添加仓库并更新缓存
使用 pig 或者是 apt/yum/dnf 安装扩展:
pig install pg_upless; # 当前活跃 PG 版本安装
pig ext install -y pg_upless -v 18 # PG 18
pig ext install -y pg_upless -v 17 # PG 17
pig ext install -y pg_upless -v 16 # PG 16
pig ext install -y pg_upless -v 15 # PG 15
pig ext install -y pg_upless -v 14 # PG 14
dnf install -y pg_upless_18 # PG 18
dnf install -y pg_upless_17 # PG 17
dnf install -y pg_upless_16 # PG 16
dnf install -y pg_upless_15 # PG 15
dnf install -y pg_upless_14 # PG 14
apt install -y postgresql-18-pg-upless # PG 18
apt install -y postgresql-17-pg-upless # PG 17
apt install -y postgresql-16-pg-upless # PG 16
apt install -y postgresql-15-pg-upless # PG 15
apt install -y postgresql-14-pg-upless # PG 14
创建扩展:
CREATE EXTENSION pg_upless CASCADE; -- 依赖: plpgsql
用法
pg_upless 检测不改变任何实际值的 UPDATE 语句(ORM 中常见)。它通过在监控表上安装触发器并收集统计信息来工作。它作为诊断工具使用,不适合长期启用。
开始监控
-- 监控特定表
SELECT pg_upless_start('public', 'boats');
-- 监控模式中的所有表
SELECT pg_upless_start('public');
停止监控
-- 停止监控特定表
SELECT pg_upless_stop('public', 'boats');
-- 停止监控模式中的所有表
SELECT pg_upless_stop('public');
查看统计信息
该扩展在 pg_upless 模式中创建两个表:
pg_upless_stats– 存储每个表的总更新次数与无效更新次数pg_upless_start_time– 记录监控开始时间(用于速率计算)