

# DB パラメータの指定
<a name="USER_ParamValuesRef"></a>

DB パラメータの種類には、次のものがあります。
+ 整数
+ ブール値
+ 文字列
+ Long
+ ダブル
+ タイムスタンプ
+ 他の定義されたデータ型オブジェクト
+ 整数、ブール値、文字列、長整数、倍精度、タイムスタンプ、オブジェクト型の値の配列

表現、数式、関数を使用して、整数およびブール型パラメータを指定することもできます。

Oracle エンジンの場合は、`DBInstanceClassHugePagesDefault` 式変数を使用して、ブール型 DB パラメータを指定します。「[DB パラメータ式の変数](#USER_FormulaVariables)」を参照してください。

PostgreSQL エンジンでは、式を使用してブール型 DB パラメータを指定できます。「[ブール型 DB パラメータ式](#USER_ParamBooleanExpressions)」を参照してください。

**Contents**
+ [

## DB パラメータ式
](#USER_ParamFormulas)
  + [

### DB パラメータ式の変数
](#USER_FormulaVariables)
  + [

### DB パラメータ式の演算子
](#USER_FormulaOperators)
+ [

## DB パラメータ関数
](#USER_ParamFunctions)
+ [

## ブール型 DB パラメータ式
](#USER_ParamBooleanExpressions)
+ [

## DB パラメータログ式
](#USER_ParamLogExpressions)
+ [

## DB パラメータ値の例
](#USER_ParamValueExamples)

## DB パラメータ式
<a name="USER_ParamFormulas"></a>

DB パラメータ式は整数値に解決される式あるいはブール値です。式は中かっこ \$1\$1 で囲みます。式は、DB パラメータ値、または DB パラメータ関数の引数として使用できます。

**構文**  

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

### DB パラメータ式の変数
<a name="USER_FormulaVariables"></a>

各式の変数は整数あるいはブール値を返します。変数名では大文字と小文字が区別されます。

*AllocatedStorage*  
データボリュームのサイズ (バイト単位) を表す整数を返します。

*DBInstanceClassHugePagesDefault*  
ブール値を返します。現在のところ、これは Oracle エンジンのみでサポートされています。  
詳細については、「[サポートされている RDS for Oracle インスタンスで HugePages をオンにする](Oracle.Concepts.HugePages.md)」を参照してください。

*DBInstanceClassMemory*  
データベースプロセスに対し、使用可能なメモリのバイト数を整数で返します。この数値は、DB インスタンスクラスの合計メモリ量から始めて内部的に計算されます。この数から、インスタンスを管理する RDS プロセスとオペレーティングシステム用に予約されているメモリ量を減算します。したがって、この数値は、「[ DB インスタンスクラス](Concepts.DBInstanceClass.md)」のインスタンスクラステーブルに示されているメモリ値よりも、常にやや低くなります。正確な値は、複数の要因の組み合わせによって異なります。これらには、インスタンスクラスと DB エンジンが含まれ、この値が適用されるのが RDS インスタンスなのか、Aurora クラスターに含まれているインスタンスなのかによっても異なります。

*DBInstanceVCPU*  
Amazon RDS がインスタンスの管理に使用する仮想中央演算装置 (vCPU) の数を表す整数を返します。

*EndPointPort*  
DB インスタンスに接続するときに使用されるポートを表す整数を返します。

*TrueIfReplica*  
DB インスタンスがリードレプリカである場合は `1`、リードレプリカでない場合は `0` が返されます。これは MySQL の`read_only` パラメータのデフォルト値です。

### DB パラメータ式の演算子
<a name="USER_FormulaOperators"></a>

DB パラメータ式では、2 つ演算子 (除算と乗算) がサポートされています。

*除算演算子: /*  
被除数を除数で割り、整数の商を返します。商の小数部分は四捨五入されず切り捨てられます。  
構文  

```
dividend / divisor
```
被除数と除数の引数は整数式である必要があります。

*乗算演算子: \$1*  
式を乗算し、式の積を返します。式の小数部分は四捨五入されず切り捨てられます。  
構文  

```
expression * expression
```
両方の式は整数である必要があります。

## DB パラメータ関数
<a name="USER_ParamFunctions"></a>

DB パラメータ関数の引数は、整数または数式で指定します。各関数には 1 つ以上の引数が必要です。複数の引数をカンマ区切りのリストで指定します。リストには、*argument1*,,*argument3* など、空のメンバーを使用することはできません。関数名では大文字と小文字は区別されません。

*IF*  
引数を返します。  
現在のところ、これは Oracle エンジンに対してのみサポートされ、最初の引数が `{DBInstanceClassHugePagesDefault}` の場合のみサポートされています。詳細については、「[サポートされている RDS for Oracle インスタンスで HugePages をオンにする](Oracle.Concepts.HugePages.md)」を参照してください。  
構文  

```
IF(argument1, argument2, argument3)
```
最初の引数が true と評価する場合に、2 番目の引数を返します。それ以外の場合には、3 番目の引数を返します。

*GREATEST*  
整数またはパラメータ式のリストから最大値を返します。  
構文  

```
GREATEST(argument1, argument2,...argumentn)
```
整数を返します。

*LEAST*  
整数またはパラメータ式のリストから最小値を返します。  
構文  

```
LEAST(argument1, argument2,...argumentn)
```
整数を返します。

*SUM*  
指定した整数またはパラメータ式の値を加算します。  
構文  

```
SUM(argument1, argument2,...argumentn)
```
整数を返します。

## ブール型 DB パラメータ式
<a name="USER_ParamBooleanExpressions"></a>

ブール型 DB パラメータ式は、ブール値 1 または 0 に解決されます。式は引用符で囲みます。

**注記**  
ブール型 DB パラメータ式は、PostgreSQL エンジンでのみサポートされています。

**構文**  

```
"expression operator expression"
```
どちらの式も整数に解決する必要があります。式には、次のものがあります。  
+ 整数定数
+ DB パラメータ式
+ DB パラメータ関数
+ DB パラメータ変数

ブール型 DB パラメータ式は、次の不等号演算子をサポートしています。

*より大きい演算子: >*  
構文  

```
"expression > expression"
```

*より小さい演算子: <*  
構文  

```
"expression < expression"
```

* より大きいか等しい演算子: >=、=>*  
構文  

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

*より小さいか等しい演算子: <=、=<*  
構文  

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

**Example ブール型 DB パラメータ式の使用**  
次のブール型 DB パラメータ式の例では、パラメータ式の結果を整数と比較します。これは、PostgreSQL DB インスタンスのブール型 DB パラメータ `wal_compression` を変更するためです。パラメータ式は、vCPU の数と値 2 を比較します。仮想 CPU の数が 2 より大きい場合、`wal_compression` DB パラメータが true に設定されます。  

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

## DB パラメータログ式
<a name="USER_ParamLogExpressions"></a>

整数 DB パラメータ値をログ式に設定できます。式は中かっこ \$1\$1 で囲みます。次に例を示します。

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

`log` 関数はログベース 2 を表します。この例では、`DBInstanceClassMemory` 数式変数も使用しています。「[DB パラメータ式の変数](#USER_FormulaVariables)」を参照してください。

**注記**  
現在、MySQL`innodb_log_file_size`パラメータを整数以外の値で指定することはできません。

## DB パラメータ値の例
<a name="USER_ParamValueExamples"></a>

これらの例は、DB パラメータの値に対して数式、関数、および式を使用していることを示しています。

**警告**  
DB パラメータグループのパラメータを不適切に設定すると、意図しない悪影響が生じる可能性があります。これには、パフォーマンスの低下やシステムの不安定化が含まれます。データベースパラメータの変更時には注意が必要です。DB パラメータグループの変更前にはデータをバックアップしてください。パラメータグループの変更は、テスト DB インスタンス (ポイントインタイム復元を使用して作成) で試してから、本番稼働用 DB インスタンスに適用してください。

**Example DB パラメータ関数 GREATEST の使用**  
Oracle プロセスパラメータで `GREATEST` 関数を指定できます。これを使用して、ユーザープロセスの数を 80、 または `DBInstanceClassMemory` を 9,868,951 で割った値の大きい方に設定します。  

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

**Example DB パラメータ関数 LEAST の使用**  
MySQL `LEAST` パラメータ値で `max_binlog_cache_size` 関数を指定できます。これを使用して、トランザクションが MySQL インスタンスで使用できる最大キャッシュサイズを 1MB または `DBInstanceClass`/256 のいずれか小さい方に設定します。  

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