tencent cloud

云数据库 PostgreSQL

动态与公告
产品动态
产品简介
产品概述
产品特性
产品优势
应用场景
信息安全说明
地域和可用区
产品功能列表
大版本生命周期说明
MSSQL 兼容版
产品计费
计费概述
实例类型与规格
购买方式
退费说明
欠费说明
备份空间收费说明
快速入门
创建 PostgreSQL 实例
连接 PostgreSQL 实例
管理 PostgreSQL 实例
数据导入
通过 DTS 迁移数据
内核能力介绍
内核版本概述
内核版本更新动态
查看内核版本
自研内核功能介绍
数据库审计
审计服务说明
开通审计服务
查看审计日志
修改审计服务
审计性能说明
用户指南
实例管理
升级实例
CPU 弹性扩容
只读实例
账号管理
数据库管理
参数管理
日志管理及分析
备份与恢复
数据迁移
插件管理
网络管理
访问管理
数据安全
租户及资源隔离
安全组
监控与告警
标签
AI 实践
使用 tencentdb_ai 插件调用大模型
使用 tencentdb_ai 插件构建 AI 应用
结合 Supabase 快速构建基于云数据库 PostgreSQL 的后端服务
实践教程
跨库访问
如何在 PostgreSQL 中自动创建分区
基于 pg_roaringbitmap 实现超大规模标签查找
一条 SQL 实现查询附近的人
如何配置云数据库 PostgreSQL 作为 GitLab 外部数据源
通过 cos_fdw 插件支持分级存储能力
通过 pgpool 实现读写分离
通过 auto_explain 插件实现慢 SQL 分析
使用 pglogical 进行逻辑复制
使用 Debezium 采集 PostgreSQL 数据
在 CVM 本地搭建 PostgreSQL 异地灾备环境
只读实例与只读组实践教程
如何使用云函数定时操作数据库
表膨胀处理
性能白皮书
测试方法
测试结果
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Read-only Replica APIs
Backup and Recovery APIs
Parameter Management APIs
Security Group APIs
Performance Optimization APIs
Account APIs
Specification APIs
Network APIs
Data Types
Error Codes
常见问题
相关协议
Service Level Agreement
Terms of Service
词汇表
联系我们

DataBase 资源隔离

PDF
聚焦模式
字号
最后更新时间: 2025-03-11 14:29:26

使用场景

在一些业务场景下,数据库对象 database 对应相关的业务逻辑,典型的如 SaaS 场景下 database 对应租户,因此需要解决 database 资源隔离的问题。本文主要讲述如何在云数据库 PostgreSQL 实例中实现 database 的 CPU 隔离。

设置 database 资源隔离

说明:
当前只有 v14.11_r1.21、v15.6_r1.10、v16.2_r1.3及以上的 PostgreSQL 14、15、16的内核版本支持资源隔离能力,具体请参考 内核版本动态
如需开启 database 资源隔离模式,请 提交工单 联系我们开启插件 tencentdb_serverless 并设置相关参数。
参数 tencentdb_serverless.min_cpu_cores 为实例可设置的最小 CPU 核数,参数 tencentdb_serverless.max_cpu_cores 为实例可设置的最大 CPU 核数。这两个参数主要用于后台管理系统控制实例中 database 的资源隔离,用户可以查看但不需要修改。
所有的 CPU 资源设置为实时生效。
当前只支持主实例开启 database 资源隔离。
当您已经开启 tencentdb_serverless 插件并设置了相关插件参数 tencentdb_serverless.min_cpu_cores 和 tencentdb_serverless.max_cpu_cores 后,可以正式开始配置。您可以通过如下命令检查插件已经安装成功:
postgres=> \\dx;
List of installed extensions
Name | Version | Schema | Description
-----------------------+---------+------------+------------------------------------------------------------------------
pg_stat_log | 1.0 | public | track runtime execution statistics of all SQL statements executed
pg_stat_statements | 1.9 | public | track planning and execution statistics of all SQL statements executed
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
tencentdb_serverless | 1.0 | public | extension for serverless mode
tencentdb_system_stat | 1.0 | public | track execution statistics of querssy executed
(5 rows)
tencentdb_serverless.min_cpu_cores 和 tencentdb_serverless.max_cpu_cores 参数的初始值为实例当前核心数,这两个参数主要用于后台管理系统控制实例中 database 的资源隔离,用户不需要修改。后续如果实例发生变配,则此二参数会随之改变。您可以基于如下命令来检查参数的当前值。
postgres=> show tencentdb_serverless.min_cpu_cores;
tencentdb_serverless.min_cpu_cores
------------------------------------
8
(1 row)

postgres=> show tencentdb_serverless.max_cpu_cores;
tencentdb_serverless.max_cpu_cores
------------------------------------
8
(1 row)
说明:
当实例中有多个 database 对象时,需要每个 database 都设置 CPU 资源限制才能使配置生效。
插件和参数检查完毕之后,您可以开始设置 database 的 CPU 资源上限和下限。我们提供了相应的函数或视图供您调用。分别说明如下:

设置指定 database 的 CPU 资源限制

函数定义如下:
tencentdb_serverless.set_database_cpu_limit(database_name text [, min_cpu_cores numeric(5,1), max_cpu_cores numeric(5,1)])
调用示例:
postgres=> select tencentdb_serverless.set_database_cpu_limit('tenant_001',2,2.5);
set_database_cpu_limit
------------------------
(1 row)

清除指定 database 的 CPU 资源限制

函数定义如下:
tencentdb_serverless.reset_database_limit(database_name text)
调用示例:
postgres=> select tencentdb_serverless.reset_database_limit('tenant_001');
reset_database_limit
----------------------
(1 row)
清空实例中所有 database 的 CPU 资源限制
函数定义如下:
tencentdb_serverless.reset_all_database_limit()
调用示例:
postgres=> select tencentdb_serverless.reset_all_database_limit();
reset_all_database_limit
--------------------------
(1 row)
查看当前实例中所有已配置的 CPU 资源限制详情
我们提供视图 tencentdb_serverless.resource_limit_view,用于您查看当前实例中所有的已配置的 CPU 资源限制详情,字段定义如下:
列名
含义
database_name
数据库的名字
min_cpu_cores
当前 database 可以使用的最小 CPU 核数
max_cpu_cores
当前 database 可以使用的最大 CPU 核数
min_mem_kilobytes
当前 database 可以使用的最大内存大小,单位为 kB。预留字段,暂时未使用
max_mem_kilobytes
当前 database 可以使用的最大内存大小,单位为 kB。预留字段,暂时未使用
调用示例:
postgres=> select * from tencentdb_serverless.resource_limit_view;
database_name | min_cpu_cores | max_cpu_cores | min_mem_kilobytes | max_mem_kilobytes
---------------+---------------+---------------+-------------------+-------------------
tenant_001 | 2.0 | 2.5 | |
tenant_002 | 2.0 | 2.5 | |
(2 rows)

进程监控

当实例中所有 database 配置了 CPU 资源隔离后,如果实例整体资源利用率比较高,则每个 database 能保证最低配置的 CPU 核数的使用。同时,如您需要查看当前系统中哪些 database 使用的资源较多,则可以使用 进程监控 能力。查看当前所有 database 的 CPU 资源使用详情可以使用如下语句:
postgres=> select datname,sum(cpu_usage) as cpu_usage from tencentdb_process_system_usage where datname !='NULL' group by datname;
datname | cpu_usage
------------+-----------
postgres | 3
tenant_001 | 1.99
tenant_002 | 1
(3 rows)
当进程监控发现某些 database 资源使用率比较高时,您可以实时调整该 database 的 CPU 的配置,该配置可以实时生效

资源迁移

当 database 对应租户,且我们通过进程监控发现该 database 的资源使用一直很高需要进行资源再整合时,云数据库 PostgreSQL 提供了数据迁移能力,您可以配置云数据库 PostgreSQL 的 逻辑迁移。配置迁移任务如下图所示:


关闭 database 资源隔离

如您需要关闭 database 的 CPU 资源隔离模式,请 提交工单 联系我们进行清理数据。后端工程师收到工单后,会重置所有的 CPU 资源参数tencentdb_serverless.min_cpu_cores 和 tencentdb_serverless.max_cpu_cores ,取消所有的资源配置,最后会删除插件 tencentdb_serverless。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈