
# 多租数据库
 #### enable_mtd
**参数说明：**用于控制是否开启内核多租功能。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：打开内核多租功能。
- off：关闭内核多租功能。
**默认值：**off
**设置方式：** 该参数属于POSTMASTER类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**在实例安装时会决定多租是否打开，不建议自行修改该参数取值。
**设置不当的风险与影响：**修改该参数取值可能导致实例无法启动。
#### backend_resource_attr
**参数说明** ：用于控制后台线程CPU功能的详细属性，修改后台线程cgroup的share和quota的值，该参数仅在[enable_mtd]打开后生效，仅sysadmin用户可以访问。
**参数类型：**字符串
**参数单位：**无
**取值范围**：该参数分为四个部分，'backend_total_share, backend_total_quota, backend_share,vacuum_share'，这四个部分的具体含义如下：
- backend_total_share：后台线程占整个实例的百分比。 取值范围：1\~99。默认值40，代表后台线程总占比是40%。
  后台线程占比大小推荐根据硬件配置设置。后台线程比例和租户比例之和保持100%。
  根据计算公式 backend_total_share = 100\*x/(x+ceil(集群的CPU核数\*1.1))，得出的x\*1024就是配置到Backend控制组的share值。
  举例：backend_total_share=40，cpu核数16U，通过上述公式计算得出share值是12288。
  
- backend_total_quota：后台线程总体可以使用的CPU个数。 取值范围：0\~数据库实例CPU核数。其中0表示后台线程没有CPU上限控制；如果参数值大于0，表示后台线程可以使用的CPU核数不能超过这个值。
  
- backend_share：后台线程中除了vacuum线程之外线程的权重。举例：backend_share=80，在DefaultBackend控制组里面share生效值就是80\*1024。 取值范围：1\~99。
  
- vacuum_share：vacuum的线程权重。举例：vacuum_share=20，在Vacuum控制组里面share生效值就是20\*1024。 取值范围：1\~99。
  
**默认值**："40, 0, 80, 20"
**设置方式：** 该参数属于POSTMASTER类型参数，请参考[表1](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**（196核CPU/1536G内存，128核CPU/1024G内存，104核CPU/1024G内存，96核CPU/1024G内存，96核CPU/768G内存，80核CPU/640G内存，64核CPU/512G内存，60核CPU/480G内存，32核CPU/256G内存）"40.round(核数\*0.05).80.20"；（16核CPU/128G内存）"40.1.80.20"。
**设置不当的风险与影响：**设置share或者quota过低，会减少后台线程的cpu使用的时间片，导致后台线程业务处理不及时造成租户的公共业务等待。设置过高的话，租户的可以用CPU资源会减少。
#### pdb_transaction_read_only
**参数说明：**设置当前PDB事务是否为只读事务。
**参数类型：**布尔型
**参数单位：**无
**取值范围：**
- on：表示当前PDB事务为只读状态。
- off：表示当前PDB事务为非只读状态。
**默认值：**off
**设置方式：** 该参数属于PDB_SIGHUP类型参数，请参考[16.2-表 GUC参数分类](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**推荐使用默认值。
**设置不当的风险与影响：**该参数设为on后，无法执行dml操作和写事务。
#### pdb_logical_decoder_max_memory
**参数说明：**管控逻辑解码任务可使用的最大内存份额。
**参数类型：**整型
**参数单位：**kB
**取值范围：**-1 \~ 2147483647
**默认值：**-1，表示不管控。可以使用到PDB的所有内存份额。
**设置方式：** 该参数属于PDB_SIGHUP类型参数，请参考[16.2-表 GUC参数分类](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。例如，不带单位取值131072，表示pdb_logical_decoder_max_memory为131072kB；带单位取值128MB，表示pdb_logical_decoder_max_memory为128MB。取值如果要带单位，必须为kB、MB、GB。
**设置建议：**推荐设置为max_dynamic_memory的50%。其中max_dynamic_memory表示当前PDB的动态内存总量，可通过查询gs_resource_plan_directives表获得。
**设置不当的风险与影响：**该参数设置过小会导致逻辑解码任务频繁失败，设置过大会导致作业线程可用内存变少，TPS过低。
![](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
为了保证逻辑解码的性能，逻辑解码每秒做一次动态内存上限检测。因此，可能会在短暂的窗口期内出现逻辑解码任务使用的内存超过pdb_logical_decoder_max_memory的情况。
#### max_logical_decoder_tasks
**参数说明：**同一实例上，解码任务的最大并发数。多租数据库下，Non-PDB和PDB共享任务数量。仅多租数据库下生效。
**参数类型：**整型
**参数单位：**无
**取值范围：**0 \~ 1024
**默认值：**20
**设置方式：** 该参数属于SIGHUP类型参数，请参见[16.2-表 GUC参数分类](https://support.huaweicloud.com/centralized-devg-v8-gaussdb/gaussdb-40-0315.html#ZH-CN_TOPIC_0000002527988878__zh-cn_topic_0000002527058484_zh-cn_topic_0000002372412413_zh-cn_topic_0283137176_zh-cn_topic_0237121562_zh-cn_topic_0059777490_t91a6f212010f4503b24d7943aed6d846)中对应设置方法进行设置。
**设置建议：**在多租数据库下建议设置的值大于等于128，保证每个租户都可以启动一个解码任务。
**设置不当的风险与影响：**多租数据库下，若取值小于128，无法保证每个租户都可以启动解码任务；若取值过大，启动并行解码的任务资源变大，会在一定程度上加大机器负载。
