OceanBaseデータベースの構成パラメータには、クラスタレベルのパラメータとテナントレベルのパラメータがあります。構成パラメータを設定することで、OceanBaseデータベースの動作を業務要件に合わせてカスタマイズできます。
パラメータの分類
OceanBaseデータベースの構成パラメータは、クラスタレベルとテナントレベルに分かれています。構成パラメータの設定により、クラスタ全体のロードバランシング、コンパクション時間、コンパクション方式、リソース割り当て、モジュールのオン/オフなどの機能を制御できます。
クラスタレベルの構成パラメータ:対象範囲はクラスタ内のすべてのOBServerです。
テナントレベルの構成パラメータ:対象範囲は、クラスタ内の現在のテナントが存在するOBServerです。
名前が「_」で始まる構成パラメータは隠しパラメータと呼ばれ、例えば_ob_max_thread_numなどがあります。開発者が障害のトラブルシューティングや緊急の運用保守時にのみ使用します。本記事では隠しパラメータについて詳しく説明しません。以下の構成パラメータには隠しパラメータは含まれていません。
異なるテナントにおける構成パラメータの表示および変更レベルは、以下の表のとおりです:
| テナントタイプ | パラメータの確認 | パラメータの設定 |
|---|---|---|
| システムテナント | クラスタレベルの構成パラメータ、テナントレベルの構成パラメータ
説明
|
クラスタレベルの構成パラメータ、テナントレベルの構成パラメータ
説明システムテナントでは、 |
| 一般テナント | クラスタレベルの構成パラメータと当該テナントのテナントレベルの構成パラメータ | 当該テナントのテナントレベルの構成パラメータ |
現在のOceanBaseデータベースにおける構成パラメータの主なデータ型とその関連説明は、以下の表のとおりです:
| データ型 | 説明 |
|---|---|
| BOOL | boolean型(ブール)。true/falseをサポートします。 |
| CAPACITY | 容量単位。b(バイト)、k(KB、キロバイト)、m(MB、メガバイト)、g(GB、10億バイト)、t(TB、テラバイト)、p(PB、ペタバイト)をサポートします。単位は大文字と小文字を区別しません。デフォルトはmです。 |
| DOUBLE | 雙精度浮動小数点数。64ビットのストレージ領域を使用し、小数点以下15桁まで正確に表現できます。有効桁数は16桁です。 |
| INT | int64整数型。正の整数、負の整数、および0をサポートします。 |
| MOMENT | 時刻。書式はhh:mm(例:02:00)または特別値disableであり、時間を指定しないことを意味します。現在はmajor_freeze_duty_timeパラメータでのみ使用されます。 |
| STRING | 文字列。ユーザーが入力した文字列の値。 |
| STRING_LIST | 文字列リスト。セミコロン(;)で区切られた複数の文字列です。 |
| TIME | 時間型。us(マイクロ秒)、ms(ミリ秒)、s(秒)、m(分)、h(時間)、d(日)などの単位をサポートします。接尾辞を付けない場合、デフォルトは秒(s)です。単位は大文字と小文字を区別しません。 |
パラメータの変更
MySQLモードで構成パラメータを変更するSQL構文は以下のとおりです:
ALTER SYSTEM [SET]
parameter_name = expression [SCOPE = {SPFILE | BOTH}] [COMMENT [=] 'text']
[ TENANT [=] ALL|all_user|all_meta|tenant_name ] {SERVER [=] 'ip:port' | ZONE [=] 'zone'};
パラメータの説明:
parameter_name:変更する構成パラメータ名を指定します。expression:変更後の構成パラメータ値を指定します。COMMENT 'text':この変更に関するコメントを追加します。このパラメータはオプションですが、省略しないことを推奨します。SCOPE:この構成パラメータ変更の適用範囲を指定します。デフォルトはBOTHです。SPFILE:内部テーブル内の構成パラメータ値のみを変更し、OBServerノードの再起動後にのみ有効になることを示します。再起動後にのみ有効になる構成パラメータのみサポートされます。BOTH:内部テーブル内の構成パラメータ値とメモリ内の構成パラメータ値の両方を変更し、変更は即時に有効になり、OBServerノードの再起動後も構成値は引き続き有効です。
TENANT:システムテナント内で、すべてまたは指定されたテナントのテナントレベルの構成パラメータを変更するために使用されます。ALL:V4.2.1バージョンから、tenant = allとtenant = all_userは同じ意味を持ち、どちらもすべてのユーザーテナントに対して有効であることを示します。all構文は廃止されつつあり、使用は推奨されません。all_user:すべてのユーザーテナントに対して有効です。all_meta:すべてのMETAテナントに対して有効です。tenant_name:テナントを指定します。
SERVER:指定されたServerインスタンスの特定の構成パラメータのみを変更します。ZONE:この構成パラメータの変更が指定されたクラスタの特定のServerタイプに対して行われることを示します。それ以外の場合は、すべてのクラスタの特定のServerタイプに対して行われます。説明
- 複数の構成パラメータを同時に変更する場合は、カンマ(,)で区切ります。
- クラスタレベルの構成パラメータは、通常のテナント設定では変更できず、システムテナント(
sysテナント)から通常のテナント設定として指定することもできません。システムテナント内でのみ設定が可能です。例えば、ALTER SYSTEM SET memory_limit='100G' TENANT='test_tenant'ステートメントを実行するとエラーが発生します。これは、memory_limitがクラスタレベルの構成パラメータだからです。 - テナントレベルの構成パラメータは、そのテナント内で直接変更することも、システムテナント内で
TENANTキーワードを指定して変更することもできます。 ALTER SYSTEMステートメントでは、ZoneとOBServerを同時に指定することはできません。また、Zoneを指定する場合は1つのZoneのみ、OBServerを指定する場合は1つのOBServerのみを指定できます。変更時にZoneもOBServerも指定しない場合、クラスタレベルの構成パラメータはクラスタ内のすべてのOBServer上で有効になり、テナントレベルの構成パラメータは現在のテナントがクラスタ内に存在するOBServer上で有効になります。- 構成パラメータがクラスタレベルかテナントレベルかを確認するには、
SHOW PARAMETERSステートメントの実行結果におけるscope列の対応する値に基づいて判断できます。 scope値がCLUSTERの場合、クラスタレベルの構成パラメータを示します。scope値がTENANTの場合、テナントレベルの構成パラメータを示します。
log_disk_utilization_threshold構成パラメータを変更する例は次のとおりです:
obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20;
指定されたZoneのlog_disk_utilization_threshold構成パラメータを変更する例は次のとおりです:
obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 ZONE='z1';
指定されたOBServerのlog_disk_utilization_threshold構成パラメータを変更する例は次のとおりです:
obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 SERVER='XXX.XXX.XXX.XXX:XXXXX';
システムテナント内で、すべてまたは指定されたテナントのテナントレベルの構成パラメータを変更します。例:
obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 TENANT='ALL';
obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20 TENANT='Oracle';
説明
実行が成功した後、指定されたすべてのテナントの構成パラメータが変更されます。
Oracleモードで構成パラメータを変更するSQL構文は次のとおりです:
ALTER SYSTEM SET parameter_name = expression
パラメータの説明:
parameter_name:変更する構成パラメータ名を指定します。
expression:変更後の構成パラメータ値を指定します。
説明
- 複数の構成パラメータを同時に変更する場合は、カンマ(,)で区切ります。
- Oracleモードでは、テナントレベルの構成パラメータのみを設定できます。
- テナントレベルの構成パラメータは、そのテナント内で直接変更することも、システムテナント内で
TENANTキーワードを指定して変更することもできます。
log_disk_utilization_threshold パラメータを変更する例は次のとおりです:
obclient> ALTER SYSTEM SET log_disk_utilization_threshold = 20;
パラメータのリセット
MySQLモードで構成パラメータをリセットするSQL構文は以下のとおりです:
ALTER SYSTEM [RESET]
parameter_name [SCOPE = {MEMORY | SPFILE | BOTH}] {TENANT [=] 'tenant_name'};
パラメータの説明:
RESETは、現在のパラメータ値をクリアし、パラメータのデフォルト値または起動時値を使用します。SCOPE:今回の構成パラメータ変更の有効範囲を指定します。デフォルトはBOTHです。MEMORY:メモリ内の構成パラメータ値のみをリセットし、変更は即時に反映されます。ただし、この変更はOBServerノードの再起動後に無効になります(現在、この方法をサポートする構成パラメータはありません)。SPFILE:内部テーブル内の構成パラメータ値のみをリセットし、OBServerノードの再起動後に有効になります。再起動後にのみ有効になる構成パラメータのみがサポートされています。BOTH:内部テーブル内の構成パラメータ値とメモリ内の構成パラメータ値の両方をリセットし、リセットは即時に反映され、OBServerノードの再起動後も構成値は有効です。
TENANT:システムテナント内で、すべてまたは指定されたテナントのテナントレベルの構成パラメータをリセットします。tenant_name:指定されたテナント。
説明
- 複数の構成パラメータを同時にリセットする場合は、カンマ(,)で区切ります。
- クラスタレベルの構成パラメータは、通常のテナントからリセットすることはできず、システムテナント(つまり
sysテナント)から通常のテナントにリセットすることもできません。システムテナント内でのみリセットがサポートされています。例えば、ALTER SYSTEM RESET memory_limit TENANT='test_tenant'ステートメントを実行するとエラーが発生します。これは、memory_limitがクラスタレベルの構成パラメータだからです。 - テナントレベルの構成パラメータは、そのテナント内で直接変更することも、システムテナント内で
TENANTキーワードを指定して変更することもできます。 ALTER SYSTEM RESETステートメントでは、ゾーンやOBServerを指定することはサポートされていません。- 構成パラメータがクラスタレベルかテナントレベルかを確認するには、
SHOW PARAMETERSステートメントの実行結果にあるscope列の対応する値に基づいて判断できます: scope値がCLUSTERの場合、クラスタレベルの構成パラメータです。scope値がTENANTの場合、テナントレベルの構成パラメータです。
log_disk_utilization_threshold パラメータをリセットする例は次のとおりです:
obclient> ALTER SYSTEM RESET log_disk_utilization_threshold;
システムテナント内で、すべてまたは指定されたテナントのテナントレベルの構成パラメータをリセットします。例:
obclient> ALTER SYSTEM RESET log_disk_utilization_threshold TENANT='ALL';
obclient> ALTER SYSTEM RESET log_disk_utilization_threshold TENANT='Oracle';
説明
実行が成功した後、指定されたすべてのテナントの構成パラメータが変更されます。
Oracleモードで構成パラメータを変更するSQL構文は次のとおりです:
ALTER SYSTEM [RESET] parameter_name = expression;
パラメータの説明:
RESETは、現在のパラメータ値をクリアし、パラメータのデフォルト値または起動時値を使用します。parameter_name:リセットする構成パラメータ名を指定します。
expression:構成パラメータをリセットします。
説明
- 複数の構成パラメータを同時にリセットする場合は、カンマ(,)で区切ります。
- Oracleモードでは、テナントレベルの構成パラメータのみをリセットできます。
- テナントレベルの構成パラメータは、そのテナント内で直接リセットすることも、システムテナント内で
TENANTキーワードを指定してリセットすることもできます。
log_disk_utilization_threshold パラメータをリセットする例は次のとおりです:
obclient> ALTER SYSTEM RESET log_disk_utilization_threshold;
パラメータの確認
パラメータを確認するためのSQL構文は以下のとおりです:
SHOW PARAMETERS [LIKE 'pattern' | WHERE expr] [TENANT = tenant_name]
説明
- システムテナントでは、自身のテナントレベルのパラメータとクラスタレベルのパラメータ情報を確認できます。また、
TENANTキーワードを指定することで、特定のテナントのパラメータ情報を確認することもできます。 - 通常のテナントでは、自身のテナントレベルのパラメータおよびシステムテナントのクラスタレベルのパラメータ情報を確認できます。
WHERE exprで指定できる列属性は、SHOW PARAMETERSが返す結果の列属性と一致していなければなりません。
SHOW PARAMETERS ステートメントを使用してパラメータを確認する例は以下のとおりです:
obclient> SHOW PARAMETERS WHERE scope = 'tenant';
obclient> SHOW PARAMETERS WHERE svr_ip != 'XXX.XXX.XXX.XXX';
obclient> SHOW PARAMETERS WHERE INFO like '%ara%';
obclient> SHOW PARAMETERS LIKE 'large_query_threshold';
実行結果は次のとおりです:
+-------+----------+----------------+----------+-----------------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+-------------------+---------------+-----------+
| zone | svr_type | svr_ip | svr_port | name | data_type | value | info | section | scope | source | edit_level | default_value | isdefault |
+-------+----------+----------------+----------+-----------------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+-------------------+---------------+-----------+
| zone1 | observer | 172.xx.xxx.xxx | 2882 | large_query_threshold | TIME | 5s | threshold for execution time beyond which a request may be paused and rescheduled as a \'large request\', 0ms means disable \'large request\'. Range: [0ms, +∞) | TENANT | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | 5s | 1 |
+-------+----------+----------------+----------+-----------------------+-----------+-------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------+---------+---------+---------+-------------------+---------------+-----------+
1 row in set
実行結果の列属性は以下の表のとおりです:
| フィールド名 | 意味 |
|---|---|
| zone | 所属するZone |
| svr_type | マシンのタイプ |
| svr_ip | マシンのIPアドレス |
| svr_port | マシンのポート |
| name | パラメータ名 |
| data_type | パラメータのデータ型。NUMBER、STRING、CAPACITYなどが含まれます |
| value | パラメータ値 説明 パラメータ値を変更する際には、指定されたZoneまたはServerのパラメータ値を変更できるため、異なるZoneまたはServerに対応するパラメータの値は異なる場合があります。 |
| info | パラメータの説明情報 |
| section | パラメータが属するカテゴリ:
|
| scope | パラメータの範囲属性:
|
| source | 現在の値の出所:
|
| edit_level | この構成パラメータの変更動作を定義します:
|
| default_value | パラメータのデフォルト値。 |
| isdefault | 現在の値がデフォルト値かどうか。
|
詳細情報
その他の構成パラメータの詳細については、構成パラメータとシステム変数の概要を参照してください。