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、1兆バイト)、p(PB、1000億バイト)をサポートします。単位は大文字と小文字を区別しません。デフォルトは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 | 現在の値がデフォルト値かどうか。
|
詳細を見る
その他の構成パラメータの詳細については、構成パラメータとシステム変数の概要を参照してください。