本記事では、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 | ユニットの割り当てに使用されます。CPUやメモリなどのリソースを割り当てる際、実際の量はこの割合で掛け算された値となります。最終的なサーバーリソースの割合は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:構成パラメータを変更する際に指定するその他の制限条件。例えば、ZoneやServerの指定などです。ALTER SYSTEM:このステートメントでは、ZoneとServerを同時に指定することはできません。また、Zoneを指定する場合は1つのZoneのみを指定でき、Serverを指定する場合も1つのServerのみを指定できます。クラスタレベルの構成パラメータ(
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を通じてパラメータの一元管理も行えます。パラメータの表示、変更、変更履歴の確認などの操作が可能です。詳細については、パラメータリストの表示を参照してください。
- クラスタ構成パラメータの詳細については、パラメータの概要を参照してください。