跳转到主要内容

qos

PostgreSQL QoS 资源治理扩展(会话与查询限流/隔离)

概览

扩展包名版本分类许可证语言
pg_qos1.1.0ADMINGPL-3.0C
ID扩展名BinLibLoadCreateTrustReloc模式
5240qos否是是是否否-

Upstream PG15-18; RPM also carries PG14. Requires preload.

版本

类型仓库版本PG 大版本包名依赖
EXTPIGSTY1.1.01817161514pg_qos-
RPMPIGSTY1.1.01817161514pg_qos_$v-
DEBPIGSTY1.1.01817161514postgresql-$v-qos-
OS / PGPG18PG17PG16PG15PG14
el8.x86_64N/A
el8.aarch64N/A
el9.x86_64N/A
el9.aarch64N/A
el10.x86_64N/A
el10.aarch64N/A
d12.x86_64N/A
d12.aarch64N/A
d13.x86_64N/A
d13.aarch64N/A
u22.x86_64N/A
u22.aarch64N/A
u24.x86_64N/A
u24.aarch64N/A
u26.x86_64N/A
u26.aarch64N/A

构建

您可以使用 pig build 命令构建 pg_qos 扩展的 RPM / DEB 包:

pig build pkg pg_qos         # 构建 RPM / DEB 包

安装

您可以直接安装 pg_qos 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:

pig repo add pgsql -u          # 添加仓库并更新缓存

使用 pig 或者是 apt/yum/dnf 安装扩展:

安装
pig install pg_qos;          # 当前活跃 PG 版本安装
pig
pig ext install -y pg_qos -v 18  # PG 18
pig ext install -y pg_qos -v 17  # PG 17
pig ext install -y pg_qos -v 16  # PG 16
pig ext install -y pg_qos -v 15  # PG 15
dnf
dnf install -y pg_qos_18       # PG 18
dnf install -y pg_qos_17       # PG 17
dnf install -y pg_qos_16       # PG 16
dnf install -y pg_qos_15       # PG 15
apt
apt install -y postgresql-18-qos   # PG 18
apt install -y postgresql-17-qos   # PG 17
apt install -y postgresql-16-qos   # PG 16
apt install -y postgresql-15-qos   # PG 15

预加载配置:

shared_preload_libraries = 'qos';

创建扩展:

CREATE EXTENSION qos;

用法

来源:

qos 1.1(发行包 1.1.0)在 PostgreSQL 15+ 上按角色与数据库限制资源。先将 qos 加入 shared_preload_libraries 并重启,再由管理员创建 SQL 对象。CPU 亲和性限制要求 Linux。

配置限制

CREATE EXTENSION qos;
ALTER ROLE app_user SET qos.work_mem_limit = '32MB';
ALTER ROLE app_user SET qos.max_concurrent_select = '100';
ALTER ROLE app_user SET qos.max_select_rate = '10/500ms';
SELECT * FROM qos_stat_rate;

限制语义

qos.work_mem_limit 限制有效工作内存;qos.cpu_core_limit 在 Linux 上控制 CPU 亲和性,在其他平台限制并行工作进程。qos.max_concurrent_tx、qos.max_concurrent_select、qos.max_concurrent_update、qos.max_concurrent_delete 与 qos.max_concurrent_insert 限制并发操作。

qos.max_tx_rate、qos.max_select_rate、qos.max_update_rate、qos.max_delete_rate 与 qos.max_insert_rate 使用 100/1s 这样的次数/窗口组合,默认 -1 禁用各项速率限制。窗口为 100 毫秒至一天。速率或并发限制触发 SQLSTATE 54000,客户端应参考重试提示。适用的角色与数据库配置取最严格值,速率组合按规范化速率比较。

观测与升级

qos_stat_rate 暴露实时窗口,其他 qos_stat 视图提供活动与计数器。qos_prometheus_metrics() 输出 Prometheus 文本格式,计数器在服务重启后重置。1.1 用这些视图替换旧的占位函数 qos_get_stats()。

升级会改变共享内存布局,因此必须替换库并重启 PostgreSQL,再在各数据库执行 ALTER EXTENSION qos UPDATE TO '1.1'。新速率限制在配置前保持禁用。这些控制不能替代应用准入限制或操作系统隔离。

这个页面对您有帮助吗?