本記事では、SQLステートメントを使用してクラスタパラメータを確認したり、変更したりする操作について説明します。
パラメータの確認
クラスタパラメータチェック項目
パラメータ |
パラメータ説明 |
推奨値 |
|---|---|---|
| memory_limit_percentage | システム全体で利用可能なメモリサイズが全体に対する割合。値の範囲は [10, 90]。 | 80 |
| server_permanent_offline_time | ノードのハートビートが途絶えた時間のしきい値。ノードのハートビートが途絶えてからどの程度経過すると永久オフラインとみなすかを示す。永久オフラインとなったノード上のデータレプリカは自動的に補完される必要がある。値の範囲は [20s, +∞)。 | 7200s |
| clog_sync_time_warn_threshold | トランザクションログ同期時間のアラートしきい値。同期時間がこの値を超えると WARN ログが生成される。値の範囲は [1ms, 10000ms]。 | 1s |
| large_query_threshold | クエリ実行時間のしきい値。時間を超えたリクエストは一時停止され、その後自動的に大規模クエリと判断され、大規模クエリのスケジューリングポリシーが適用される。値の範囲は [1ms, +∞)。 | 5s |
| trace_log_slow_query_watermark | クエリの実行時間しきい値。クエリの実行時間がこのしきい値を超えると低速クエリとみなされ、その追跡ログがシステムログに出力される。値の範囲は [1ms, +∞)。 | 1s |
| autoinc_cache_refresh_interval | 自動インクリメント列キャッシュのリフレッシュ間隔。値の範囲は [100ms, +∞)。 | 4200s |
| default_compress_func | テーブルデータのデフォルト圧縮アルゴリズム。テーブル作成時に他の圧縮アルゴリズムを指定することも可能。値 (none、lz4-1.0、snappy-1.0、zlib-1.0、zstd-1.0、zstd-1.3.8)。 | zstd_1.0 |
| syslog_io_bandwidth_limit | システムログが占用できるディスクI/O帯域幅の上限。帯域幅の上限を超えるシステムログは破棄される。 | 5 MB |
| memstore_limit_percentage | テナントがMemStoreに使用するメモリが利用可能なメモリの合計に占める割合。値の範囲は [1, 99]。 | 50 |
| system_memory | システムがテナントID 500 のテナント用に予約するメモリ容量を設定するために使用される。値の範囲は [0 MB, +∞)。 |
50 GB |
| resource_hard_limit | Unitの割り当てに使用される。CPUやメモリなどのリソースを割り当てる際、リソースの総量は実際の数値にこの割合を掛けた値となる。最終的なServerリソースの割合はresource-hard-limitを超えてはならない。値の範囲は [100, 10000]。 | 100 |
| syslog_level | システムログレベル。値 (DEBUG、TRACE、INFO、WARN、USER-ERR、ERROR)。 | INFO |
| data_disk_usage_limit_percentage | データファイルに書き込むことができる最大割合。このしきい値を超えるとデータの移入が禁止される。値の範囲は [50, 100]。 | 95 |
| enable_perf_event | パフォーマンスイベントの情報収集機能を有効にするかどうか。値はTrueまたはFalse。 | True |
| enable_sql_audit | SQL監査機能を有効にするかどうか。値はTrueまたはFalse。 | True |
ビューを使用したパラメータ値の確認
システムテナント内で、ビュー GV$OB_PARAMETERS を使用してクラスタパラメータの値を確認できます。ステートメントは以下のとおりです:
SELECT SVR_IP,ZONE,NAME,VALUE FROM OCEANBASE.GV$OB_PARAMETERS WHERE NAME IN ("memory_limit_percentage", "server_permanent_offline_time", "clog_sync_time_warn_threshold", "large_query_threshold", "trace_log_slow_query_watermark", "autoinc_cache_refresh_interval", "default_compress_func", "syslog_io_bandwidth_limit", "memstore_limit_percentage", "system_memory", "resource_hard_limit", "syslog_level", "data_disk_usage_limit_percentage", "enable_perf_event", "enable_sql_audit");
GV$OB_PARAMETERS の詳細については、GV$OB_PARAMETERSを参照してください。
例:
obclient [(none)]> SELECT SVR_IP,ZONE,NAME,VALUE FROM OCEANBASE.GV$OB_PARAMETERS WHERE NAME IN ("memory_limit_percentage", "server_permanent_offline_time", "clog_sync_time_warn_threshold", "large_query_threshold", "trace_log_slow_query_watermark", "autoinc_cache_refresh_interval", "default_compress_func", "syslog_io_bandwidth_limit", "memstore_limit_percentage", "system_memory", "resource_hard_limit", "syslog_level", "data_disk_usage_limit_percentage", "enable_perf_event", "enable_sql_audit");
戻り結果は次のとおりです:
+-----------------+-------+----------------------------------+------------+
| SVR_IP | ZONE | NAME | VALUE |
+-----------------+-------+----------------------------------+------------+
| xxx.xxx.xxx.xxx | zone1 | data_disk_usage_limit_percentage | 90 |
| xxx.xxx.xxx.xxx | zone1 | clog_sync_time_warn_threshold | 100ms |
| xxx.xxx.xxx.xxx | zone1 | resource_hard_limit | 100 |
| xxx.xxx.xxx.xxx | zone1 | server_permanent_offline_time | 3600s |
| xxx.xxx.xxx.xxx | zone1 | memstore_limit_percentage | 50 |
| xxx.xxx.xxx.xxx | zone1 | large_query_threshold | 5s |
| xxx.xxx.xxx.xxx | zone1 | autoinc_cache_refresh_interval | 3600s |
| xxx.xxx.xxx.xxx | zone1 | memory_limit_percentage | 80 |
| xxx.xxx.xxx.xxx | zone1 | syslog_io_bandwidth_limit | 30MB |
| xxx.xxx.xxx.xxx | zone1 | syslog_level | WDIAG |
| xxx.xxx.xxx.xxx | zone1 | default_compress_func | zstd_1.3.8 |
| xxx.xxx.xxx.xxx | zone1 | enable_perf_event | True |
| xxx.xxx.xxx.xxx | zone1 | enable_sql_audit | True |
| xxx.xxx.xxx.xxx | zone1 | trace_log_slow_query_watermark | 1s |
| xxx.xxx.xxx.xxx | zone1 | system_memory | 30G |
+-----------------+-------+----------------------------------+------------+
15 rows in set
SHOWステートメントを使用したパラメータ値の確認
システムテナントで以下のSQLステートメントを実行することで、クラスタパラメータの値を確認できます。
SHOW PARAMETERS LIKE '$parameters_name';
ここで、$parameters_name はクラスタパラメータ名です。
例:
obclient [(none)]> SHOW PARAMETERS LIKE 'enable_sql_audit';
戻り結果は次のとおりです:
+-------+----------+----------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+---------------+-----------+
| 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 | enable_sql_audit | BOOL | True | specifies whether SQL audit is turned on. The default value is TRUE. Value: TRUE: turned on FALSE: turned off | OBSERVER | CLUSTER | DEFAULT | DYNAMIC_EFFECTIVE | true | 1 |
+-------+----------+----------------+----------+------------------+-----------+-------+---------------------------------------------------------------------------------------------------------------+----------+---------+---------+-------------------+---------------+-----------+
1 row in set
クラスタパラメータの変更
以下のSQLステートメントを使用して、クラスタパラメータの値を変更できます。
クラスタパラメータは構成パラメータと同じです。構成パラメータを変更する構文は以下のとおりです。複数のシステム構成パラメータを同時に変更する場合は、カンマ(,)で区切ります。
ALTER SYSTEM SET param_name = expr
[COMMENT 'text']
[PARAM_OPTS]
[TENANT = 'tenantname'];
PARAM_OPTS:
[ZONE='zone' | SERVER='server_ip:rpc_port']
パラメータ変更ステートメントの説明:
PARAM_OPTS:構成パラメータを変更する際に指定するその他の制限条件。例えば、ゾーンやサーバーの指定などです。ALTER SYSTEM:このステートメントでは、ゾーンとサーバーを同時に指定することはできません。ゾーンを指定する場合は1つのゾーンのみ、サーバーを指定する場合も1つのサーバーのみを指定できます。クラスタレベルの構成パラメータ(
Scope)は、通常のテナントでは設定できません。また、sysテナントが通常のテナントを指定して設定することもできません。例えば、ALTER SYSTEM SET memory_limit='100G' TENANT='test_tenant'はエラーになります。これはmemory_limitがクラスタレベル(Scope)の構成パラメータだからです。
例:
server_permanent_offline_time の値を7200秒に変更します。
obclient [(none)]> ALTER SYSTEM SET server_permanent_offline_time = '7200s';
関連ドキュメント
- OceanBaseクラウドプラットフォーム(OceanBase Cloud Platform、OCP)を使用してOceanBaseクラスタを管理している場合は、OCPを通じてパラメータの一元管理を行うこともできます。パラメータの確認、変更、変更履歴の確認などの操作が可能です。詳細については、パラメータリストの表示を参照してください。
- クラスタ構成パラメータの詳細については、構成パラメータの概要を参照してください。