

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 指定資料庫參數
<a name="USER_ParamValuesRef"></a>

資料庫參數類型包含下列各項：
+ Integer
+ 布林值
+ 字串
+ Long
+ Double
+ 時間戳記
+ 其他定義資料類型的物件
+ integer、Boolean、string、long、double、timestamp 或 object 參數類型的值陣列

您還可以使用運算式、公式和函數來指定整數及布林值參數。

對於 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` 除以 9,868,951。  

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

**Example 使用資料庫參數函數 LEAST**  
您可以在 MySQL `LEAST` 參數值中指定 `max_binlog_cache_size` 函數。使用該函數將交易可在 MySQL 執行個體中使用的快取大小上限設為 1 MB 或 `DBInstanceClass`/256 (取較小者)。  

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