

# 指定数据库参数
<a name="USER_ParamValuesRef"></a>

数据库参数类型包括：
+ 整数
+ Boolean
+ String
+ 长整型
+ Double
+ Timestamp
+ 其他定义的数据类型的对象
+ 整数、布尔值、字符串、long、double、时间戳或对象类型的值的数组

您还可以使用表达式、公式和函数指定整数和布尔参数。

对于 Oracle 引擎，您可以使用 `DBInstanceClassHugePagesDefault` 公式变量指定布尔值数据库参数。请参阅 [数据库参数公式变量](#USER_FormulaVariables)。

对于 PostgreSQL 引擎，您可以使用表达式指定布尔值数据库参数。请参阅 [布尔值数据库参数表达式](#USER_ParamBooleanExpressions)。

**Contents**
+ [数据库参数公式](#USER_ParamFormulas)
  + [数据库参数公式变量](#USER_FormulaVariables)
  + [数据库参数公式运算符](#USER_FormulaOperators)
+ [数据库参数函数](#USER_ParamFunctions)
+ [布尔值数据库参数表达式](#USER_ParamBooleanExpressions)
+ [数据库参数日志表达式](#USER_ParamLogExpressions)
+ [数据库参数值示例](#USER_ParamValueExamples)

## 数据库参数公式
<a name="USER_ParamFormulas"></a>

数据库参数公式是一种可解析为整数值或布尔值的表达式。可以将表达式用大括号括起来：\$1\$1。可以为数据库参数值使用公式，也可以将公式用作数据库参数函数的参数。

**语法**  

```
{FormulaVariable}
{FormulaVariable*Integer}
{FormulaVariable*Integer/Integer}
{FormulaVariable/Integer}
```

### 数据库参数公式变量
<a name="USER_FormulaVariables"></a>

每个公式变量会返回一个整数或布尔值。变量的名称是区分大小写的。

*AllocatedStorage*  
返回一个整数，它表示数据卷的大小（以字节为单位）。

*DBInstanceClassHugePagesDefault*  
返回一个布尔值。当前，仅 Oracle 引擎支持它。  
有关更多信息，请参阅“[为 RDS for Oracle 实例开启大页](Oracle.Concepts.HugePages.md)”。

*DBInstanceClassMemory*  
该变量会返回一个整数，表示数据库进程可用的内存字节数。这个数字是以数据库实例类的内存总量开始在内部计算得出的。从此处，计算结果将减去为操作系统以及管理实例的 RDS 进程预留的内存。因此，该数字总是略低于 [数据库实例类](Concepts.DBInstanceClass.md) 中实例类表所示的内存数字。确切的值取决于多种因素的组合。其中包括实例类、数据库引擎，以及其适用于 RDS 实例还是适用于属于 Aurora 集群一部分的实例。

*DBInstanceVCPU*  
返回一个整数，它表示 Amazon RDS 用于管理实例的虚拟中央处理器 (vCPU) 的数量。

*EndPointPort*  
返回一个整数，它表示连接到数据库实例时使用的端口。

*TrueIfReplica*  
如果数据库实例是只读副本，返回 `1`，如果不是只读副本，则返回 `0`。这是 MySQL 中 `read_only` 参数的默认值。

### 数据库参数公式运算符
<a name="USER_FormulaOperators"></a>

数据库参数公式支持两个运算符：除法和乘法。

*除法运算符：/*  
用除数除以被除数，返回整数型商。商中的小数不四舍五入，直接截断。  
语法  

```
dividend / divisor
```
被除数和除数参数必须是整数型表达式。

*乘法运算符：\$1*  
将表达式乘以表达式，返回表达式的乘积。表达式中的小数不四舍五入，直接截断。  
语法  

```
expression * expression
```
两个表达式必须都是整数型。

## 数据库参数函数
<a name="USER_ParamFunctions"></a>

您可以将数据库参数函数的参数指定为整数或公式。每个函数必须具有至少一个参数。将多个参数指定为逗号分隔的列表。列表不能拥有任何空成员，如 *argument1*、*argument3*。函数名称区分大小写。

*IF*  
返回一个参数。  
当前，只有 Oracle 引擎支持它，并且唯一支持的第一个参数是 `{DBInstanceClassHugePagesDefault}`。有关更多信息，请参阅“[为 RDS for Oracle 实例开启大页](Oracle.Concepts.HugePages.md)”。  
语法  

```
IF(argument1, argument2, argument3)
```
如果第一个参数的计算结果为 true，则返回第二个参数。否则返回第三个参数。

*GREATEST*  
返回整数型或者参数公式列表中最大的值。  
语法  

```
GREATEST(argument1, argument2,...argumentn)
```
返回整数。

*LEAST*  
返回整数型或者参数公式列表中最小的值。  
语法  

```
LEAST(argument1, argument2,...argumentn)
```
返回整数。

*SUM*  
添加指定整数型或者参数公式的值。  
语法  

```
SUM(argument1, argument2,...argumentn)
```
返回整数。

## 布尔值数据库参数表达式
<a name="USER_ParamBooleanExpressions"></a>

布尔值数据库参数表达式解析为布尔值 1 或 0。引号中的内容是表达式。

**注意**  
仅 PostgreSQL 引擎支持布尔值数据库参数表达式。

**语法**  

```
"expression operator expression"
```
两个表达式都必须解析为整数。表达式可以是：  
+ 整型常量
+ 数据库参数公式
+ 数据库参数函数
+ 数据库参数变量

布尔值数据库参数表达式支持以下不等式运算符：

*大于运算符：>*  
语法  

```
"expression > expression"
```

*小于运算符：<*  
语法  

```
"expression < expression"
```

* 大于或等于运算符：>=、=>*  
语法  

```
"expression >= expression"
"expression => expression"
```

*小于或等于运算符:<=、=<*  
语法  

```
"expression <= expression"
"expression =< expression"
```

**Example 使用布尔值数据库参数表达式**  
以下布尔数据库参数表达式示例将参数公式的结果与整数进行比较。这样做是为了修改 PostgreSQL 数据库实例的布尔数据库参数 `wal_compression`。参数表达式将 vCPU 的数量与值 2 进行比较。如果 vCPU 的数量大于 2，`wal_compression` 数据库参数则会设置为 true。  

```
aws rds modify-db-parameter-group --db-parameter-group-name group-name \
--parameters "ParameterName=wal_compression,ParameterValue=\"{DBInstanceVCPU} > 2\" "
```

## 数据库参数日志表达式
<a name="USER_ParamLogExpressions"></a>

您可以为日志表达式设置整数数据库参数值。可以将表达式用大括号括起来：\$1\$1。例如：

```
{log(DBInstanceClassMemory/8187281418)*1000}
```

`log` 函数表示日志基数 2。此示例还使用了 `DBInstanceClassMemory` 公式变量。请参阅 [数据库参数公式变量](#USER_FormulaVariables)。

**注意**  
目前，您只能将 MySQL `innodb_log_file_size` 参数指定为一个整数。

## 数据库参数值示例
<a name="USER_ParamValueExamples"></a>

这些示例展示了如何使用公式、函数和表达式来表达数据库参数的值。

**警告**  
在数据库参数组内设置参数不当可能会产生意外的不利影响。可能包括性能下降和系统不稳定。修改数据库参数时应保持谨慎，且修改数据库参数组前要备份数据。将参数组更改应用到生产数据库实例前，请在使用时间点还原创建的测试数据库实例上试用这些参数组更改。

**Example 使用数据库参数函数 GREATEST**  
您可以指定 Oracle 进程参数中的 `GREATEST` 函数。使用它可以将用户进程数设置为 80 或 `DBInstanceClassMemory`/9868951 中的较大值。  

```
GREATEST({DBInstanceClassMemory/9868951},80)
```

**Example 使用数据库参数函数 LEAST**  
您可以指定 MySQL `LEAST` 参数值中的 `max_binlog_cache_size` 函数。使用它将事务可以在 MySQL 实例中使用的最大缓存大小设置为 1 MB 或`DBInstanceClass`/256 中的较小值。  

```
LEAST({DBInstanceClassMemory/256},10485760)
```