tencent cloud

文档反馈

DataBase 资源隔离

最后更新时间:2024-08-09 15:51:43

    使用场景

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

    设置 database 资源隔离

    说明:
    当前只有 v14.11_r1.21及以上的 PostgreSQL 14的内核版本支持资源隔离能力。如需开启 database 资源隔离模式,请 提交工单 联系我们开启插件 tencentdb_serverless 并设置相关参数。
    其中 tencentdb_serverless.min_cpu_cores 为实例可设置的最小 CPU 核数,tencentdb_serverless.max_cpu_cores 为实例可设置的最大 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。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持