ユーザーがさまざまなビジネスシナリオでOceanBaseデータベースに基づいて優れたパフォーマンスを得られるよう、OceanBaseは過去の実運用環境での膨大なチューニング経験に基づいて、各ビジネスシナリオの主要な構成パラメータと変数の推奨設定をまとめました。OceanBaseクラウドプラットフォーム(OceanBase Cloud Platform、OCP)では、ユーザーによるテナント作成時にパラメータ設定でパラメータテンプレートを選択することができます。ユーザーが選択したパラメータテンプレートに基づき、対応するバージョンのカーネルのRPMパッケージの内容を読み取り、対応するパラメータ値を取得します。OCPを使用したテナントの作成に関する情報は、プライマリテナントの新規作成を参照してください。
本記事では、CLIによるOceanBaseデータベースのデプロイ後、さまざまな業務アプリケーションシナリオの主要な構成パラメータとシステム変数の推奨設定について説明します。
パラメータ設定テンプレート
OceanBaseデータベースのRPMパッケージをインストールすると、/home/admin/oceanbase/etc ディレクトリで、さまざまなビジネスシナリオの推奨されるパラメータ設定のパラメータ設定テンプレートを確認することができます。
default_parameter.json:構成パラメータの推奨設定が保存されました。default_system_variable.json:変数の推奨設定が保存されました。
注意
本記事で紹介するパラメータ情報は、OceanBaseデータベースV4.3.5 BP4バージョンの設定テンプレートに基づき更新されています。他のバージョンの推奨設定については、該当するバージョンのインストールパッケージに含まれる設定ファイルから最新のパラメータ構成を入手してください。
パラメータ設定ファイルのテンプレートのカテゴリー:
express_oltp:このテンプレートは、取引や決済の基幹システム、インターネットの高スループット型アプリケーションなどのワークロードに適用されます。これらのワークロードでは、外部キー制約やストアドプロシージャ、長時間・大規模なトランザクション、複雑な結合や副問い合わせといった要素を利用しないことを前提としています。このシナリオに関連する推奨設定の詳細情報については、下記の express_oltpを参照してください。complex_oltp:このテンプレートは、銀行や保険システムなどのワークロードに適しています。通常、複雑な結合、複雑な関連サブクエリ、PLで記述されたバッチ処理ジョブ、および長時間トランザクションと大規模トランザクションが含まれます。実行時間が短いクエリの場合、パラレル実行が採用されることがあります。このシナリオに関連する推奨設定の詳細情報については、下記の complex_oltpを参照してください。olap:このテンプレートは主にリアルタイムデータウェアハウス分析アプリケーションに使用されます。このシナリオに関連する推奨設定の詳細情報については、下記のolapを参照してください。htap:このテンプレートは、OLAPとOLTPの混合ワークロードシナリオに適しています。運用データのリアルタイム分析、不正行為の検出、パーソナライズされた推奨事項などが含まれます。このシナリオに関連する推奨設定の詳細情報については、下記のhtapを参照してください。kv:このテンプレートは、HBase互換とKey-Valueテーブルモデルアクセスモード、単一パーティションアクセス、NoSQLに適しています。このシナリオは通常、非常に高いデータスループット要件が伴い、レイテンシに非常に敏感です。このシナリオに関連する推奨設定の詳細情報については、下記kvを参照してください。
express_oltp
このシナリオでは、現在変数の推奨設定はありません。
構成パラメータと推奨値の詳細は次のとおりです:
| パラメータ | 推奨値 | 推奨値の説明 | レベル |
|---|---|---|---|
| enable_record_trace_log | False | SQLとトランザクションのトレースイベントの記録を無効にします。 | cluster |
| enable_syslog_recycle | True | syslog の自動リサイクルを有効化すると、ログファイルでディスク容量が占有されることを防ぐことができます。 | cluster |
| max_syslog_file_count | 300 | enable_syslog_recycle を有効にする場合、この値を適切な値に設定する必要があります。300は経験に基づく推奨値です。 |
cluster |
| log_transport_compress_all | True | 帯域幅が制限されているシナリオの場合、RPC圧縮により、少量のCPUオーバーヘッドでネットワーク帯域幅を節約することができます。 | tenant |
| default_load_mode | DISABLED | 単純なOLTPワークロードの場合、デフォルトでダイレクトロードは使用されません。 | tenant |
| direct_load_allow_fallback | True | 単純な OLTPワークロードの場合、ダイレクトロードに失敗すると、通常のインポート方式へのフォールバックが許可されます。 | tenant |
| _enable_filter_reordering | False | 単純なOLTPワークロードの場合、フィルターの並べ替えを無効にします。 | tenant |
| default_table_merge_engine | PARTIAL_UPDATE | シンプルなOLTPワークロードの処理にはpartial_updateマージエンジンを使用します。 |
tenant |
express_oltpシナリオ例
sysテナントで以下のステートメントを実行し、クラスタレベルの構成パラメータを設定します。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;ユーザーテナントで以下のステートメントを実行し、テナントレベルの構成パラメータを設定します。
MySQL モードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True; ALTER SYSTEM SET _enable_filter_reordering = False; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE';Oracleモードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True; ALTER SYSTEM SET "_enable_filter_reordering" = False; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE';
complex_oltp
このシナリオでは、現在変数の推奨設定はありません。
構成パラメータと推奨値の詳細は次のとおりです:
| パラメータ | 推奨値 | 推奨値の説明 | レベル |
|---|---|---|---|
| enable_record_trace_log | False | SQL とトランザクションのトレースイベントの記録を無効にします。 | cluster |
| large_query_threshold | 600s | 複雑な OLTPシナリオでは、一部のクエリの実行に時間がかかる場合があります。 | cluster |
| enable_syslog_recycle | True | syslogの自動リサイクルを有効化すると、ログファイルでディスク容量が占有されることを防ぐことができます。 | cluster |
| max_syslog_file_count | 300 | enable_syslog_recycle を有効にする場合、この値を適切な値に設定する必要があります。300は経験に基づく推奨値です。 |
cluster |
| log_transport_compress_all | True | 帯域幅が制限されているシナリオの場合、RPC圧縮により、少量のCPUオーバーヘッドでネットワーク帯域幅を節約することができます。 | tenant |
| default_load_mode | DISABLED | 複雑なOLTPワークロードの場合、デフォルトでダイレクトロードは使用されません。 | tenant |
| direct_load_allow_fallback | True | 複雑なOLTPワークロードの場合、ダイレクトロードに失敗すると、通常のインポート方式へのフォールバックが許可されます。 | tenant |
| _enable_filter_reordering | False | 複雑なOLTPワークロードのフィルターの並べ替えを無効にします。 | tenant |
| default_table_merge_engine | PARTIAL_UPDATE | 複雑なOLTPワークロードの処理に partial_update マージエンジンを使用します。 |
tenant |
complex_oltpシナリオ例
sys テナントで以下のステートメントを実行し、クラスタレベルの構成パラメータを設定します。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET large_query_threshold = '600s'; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;ユーザーテナントで以下のステートメントを実行し、テナントレベルの構成パラメータを設定します。
MySQL モードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True; ALTER SYSTEM SET _enable_filter_reordering = False; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE';Oracle モードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True; ALTER SYSTEM SET "_enable_filter_reordering" = False; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE';
olap
構成パラメータと推奨値の詳細は次のとおりです:
| パラメータ | 推奨値 | 推奨値の説明 | レベル |
|---|---|---|---|
| enable_record_trace_log | False | トレースログを無効にすると、AP のパフォーマンスが向上します。 | cluster |
| trace_log_slow_query_watermark | 7d | AP シナリオでは、低速クエリを定義する必要はありません。 | cluster |
| large_query_threshold | 0ms | 大規模クエリ検出が無効であることを表します。 | cluster |
| enable_syslog_recycle | True | syslog の自動リサイクルを有効化すると、ログファイルでディスク容量が占有されることを防ぐことができます。 | cluster |
| max_syslog_file_count | 300 | enable_syslog_recycle を有効にする場合、この値を適切な値に設定する必要があります。300は経験に基づく推奨値です。 |
cluster |
| default_table_store_format | column | AP のデフォルト形式は、純粋なカラムストアテーブルとして指定されます。 | tenant |
| _io_read_batch_size | 128K | 1 回の読み取り I/O リクエストの最大バッチサイズ。 | tenant |
| _io_read_redundant_limit_percentage | 50 | 1 回の読み取り I/O リクエストにおける冗長データの最大パーセンテージ (冗長データとは、バッチの途中で読み取りが必要だが、既にヒットしキャッシュされているか、インデックススキップでフィルタリングされたデータブロックを指します)。 | tenant |
| _io_callback_thread_count | 64 | IOコールバックスレッドの数。 | tenant |
| default_load_mode | FULL_DIRECT_WRITE | 現在ではデフォルトでダイレクトロード機能は有効になっていません。ダイレクトロードを使用する必要がある場合は、Hintで指定できます。 | tenant |
| direct_load_allow_fallback | False | 従来の OLAP ワークロードの場合、ダイレクトロードに失敗すると、直接エラーが報告され、通常のインポート方式へのフォールバックは許可されません。 | tenant |
| _nested_loop_join_enabled | False | 従来の OLAP ワークロードの場合、ネストされたループ結合を無効にします。 | tenant |
| default_table_organization | HEAP | テーブル内のデータ行が格納される順序。AP シナリオの場合、テーブル内のデータ行は特定の順序で格納されません。
説明このパラメータは、V4.3.5 BP1 バージョンから導入されました。 |
tenant |
| default_table_merge_engine | DELETE_INSERT | delete_insertマージエンジンでOLAPワークロードを処理します。 |
tenant |
| _force_subquery_unnest | True | この構成パラメータは、オプティマイザがサブクエリを結合形式にリライトる際に、事前の仮定に基づいて一部のリライト機会を放棄するかどうかを制御します。OLAPモードでは、この値をTrueに設定すると、オプティマイザは事前のカットルールを考慮せず、正確性を保証した上で、リライト可能なサブクエリをすべて結合形式にリライトます。 |
tenant |
| max_partition_num | 65536 | AP/HTAPワークロードにおいて各テーブルの最大パーティション数を65536に増やします。データウェアハウスやリアルタイム分析のシナリオで一般的な、時間範囲とハッシュサブパーティションによる大規模なパーティショニングをサポートします。 | tenant |
変数の推奨値の詳細は、以下のとおりです:
| 変数 | 推奨値 | 推奨値の説明 | レベル |
|---|---|---|---|
| ob_query_timeout | 604800000000 | 7 日間に設定します。 | tenant |
| ob_trx_timeout | 604800000000 | 7 日間に設定します。 | tenant |
| parallel_degree_policy | AUTO | Auto DOP ポリシーが有効であることを表します。 Auto DOP の詳細については、Auto DOPを参照してください。 |
tenant |
| parallel_min_scan_time_threshold | 10 | 実行時間が 100 ms を超えるクエリで、優れたパラレル実行性能を発揮します。 | tenant |
| ob_sql_work_area_percentage | 30 | ワークエリアメモリを大きめに設定することで、メモリリークによるコストを削減することができます。 | tenant |
| collation_server | utf8mb4_bin | その他の collation に比べ、バイナリ collation を使用するとパフォーマンスが 20% 向上できます。 | tenant |
| collation_connection | utf8mb4_bin | その他の collation に比べ、バイナリ collation を使用するとパフォーマンスが 20% 向上できます。 | tenant |
OLAPシナリオ例
sys テナントで以下のステートメントを実行し、クラスタレベルの構成パラメータを設定します。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET trace_log_slow_query_watermark = '7d'; ALTER SYSTEM SET large_query_threshold = '0ms'; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;ユーザーテナントで以下のステートメントを実行し、テナントレベルの構成パラメータを設定します。
MySQLモードテナントの設定例:
ALTER SYSTEM SET default_table_store_format = 'column'; ALTER SYSTEM SET _io_read_batch_size = '128K'; ALTER SYSTEM SET _io_read_redundant_limit_percentage = 50; ALTER SYSTEM SET _io_callback_thread_count = 64; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = False; ALTER SYSTEM SET _nested_loop_join_enabled = False; ALTER SYSTEM SET default_table_organization = 'HEAP'; ALTER SYSTEM SET default_table_merge_engine = 'DELETE_INSERT'; ALTER SYSTEM SET _force_subquery_unnest = True; ALTER SYSTEM SET max_partition_num = 65536;Oracleモードテナントの設定例:
ALTER SYSTEM SET default_table_store_format = 'column'; ALTER SYSTEM SET "_io_read_batch_size" = '128K'; ALTER SYSTEM SET "_io_read_redundant_limit_percentage" = 50; ALTER SYSTEM SET "_io_callback_thread_count" = 64; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = False; ALTER SYSTEM SET "_nested_loop_join_enabled" = False; ALTER SYSTEM SET default_table_organization = 'HEAP'; ALTER SYSTEM SET default_table_merge_engine = 'DELETE_INSERT'; ALTER SYSTEM SET "_force_subquery_unnest" = True; ALTER SYSTEM SET max_partition_num = 65536;
ユーザーテナントで以下のステートメントを実行し、テナントレベルの変数を設定します。
MySQLモードテナントの設定例:
SET GLOBAL ob_query_timeout = 604800000000; SET GLOBAL ob_trx_timeout = 604800000000; SET GLOBAL parallel_degree_policy = AUTO; SET GLOBAL parallel_min_scan_time_threshold = 10; SET GLOBAL ob_sql_work_area_percentage = 30; SET GLOBAL collation_server = utf8mb4_bin; SET GLOBAL collation_connection = utf8mb4_bin;Oracleモードテナントの設定例:
SET GLOBAL ob_query_timeout = 604800000000; SET GLOBAL ob_trx_timeout = 604800000000; SET GLOBAL parallel_degree_policy = AUTO; SET GLOBAL parallel_min_scan_time_threshold = 10; SET GLOBAL ob_sql_work_area_percentage = 30;
htap
このシナリオでは、現在変数の推奨設定はありません。
構成パラメータと推奨値の詳細は次のとおりです:
| パラメータ | 推奨値 | 推奨値の説明 | レベル |
|---|---|---|---|
| large_query_threshold | 600s | HTAP ワークロードには AP クエリが存在するため、これを高速で実行する必要があります。 | cluster |
| enable_record_trace_log | False | トレースログを無効にすると、AP のパフォーマンスが向上します。 | cluster |
| enable_syslog_recycle | True | syslog の自動リサイクルを有効化すると、ログファイルでディスク容量が占有されることを防ぐことができます。 | cluster |
| max_syslog_file_count | 300 | enable_syslog_recycle を有効にする場合、この値を適切な値に設定する必要があります。300は経験に基づく推奨値です。 |
cluster |
| log_transport_compress_all | True | 帯域幅が制限されているシナリオの場合、RPC圧縮により、少量のCPUオーバーヘッドでネットワーク帯域幅を節約することができます。 | tenant |
| default_load_mode | DISABLED | 従来のHTAPワークロードでは、デフォルトでダイレクトロードは使用しません。 | tenant |
| direct_load_allow_fallback | True | 従来のHTAPワークロードの場合、ダイレクトロードに失敗すると、通常のインポート方式へのフォールバックが許可されます。 | tenant |
| default_table_merge_engine | PARTIAL_UPDATE | partial_updateマージエンジンを使用してHTAPワークロードを処理します。 |
tenant |
| max_partition_num | 65536 | AP/HTAPワークロードにおける各テーブルの最大パーティション数を65536に増やし、データウェアハウスやリアルタイム分析のシナリオで一般的な、時間範囲とハッシュサブパーティションによる大規模なパーティショニングをサポートします。 | tenant |
htapシナリオ例
sysテナントで以下のステートメントを実行し、クラスタレベルの構成パラメータを設定します。
ALTER SYSTEM SET large_query_threshold = '600s'; ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;ユーザーテナントで以下のステートメントを実行し、テナントレベルの構成パラメータを設定します。
MySQL モードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE'; ALTER SYSTEM SET max_partition_num = 65536;Oracle モードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET default_load_mode = 'DISABLED'; ALTER SYSTEM SET direct_load_allow_fallback = True; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE'; ALTER SYSTEM SET max_partition_num = 65536;
kv
このシナリオでは、現在変数の推奨設定はありません。
構成パラメータと推奨値の詳細は次のとおりです:
| パラメータ | 推奨値 | 推奨値の説明 | レベル |
|---|---|---|---|
| enable_record_trace_log | False | トレースログを無効にすると、APのパフォーマンスが向上します。 | cluster |
| large_query_threshold | 0ms | KVモードの大規模クエリ検出を無効にします。 | cluster |
| enable_syslog_recycle | True | syslogの自動リサイクルを有効化すると、ログファイルでディスク容量が占有されることを防ぐことができます。 | cluster |
| max_syslog_file_count | 300 | enable_syslog_recycle を有効にする場合、この値を適切な値に設定する必要があります。300は経験に基づく推奨値です。 |
cluster |
| log_transport_compress_all | True | 帯域幅が制限されているシナリオの場合、RPC圧縮により、少量のCPUオーバーヘッドでネットワーク帯域幅を節約することができます。 | tenant |
| _enable_filter_reordering | False | KVモードでフィルターの並べ替えを無効にします。 | tenant |
| default_table_merge_engine | PARTIAL_UPDATE | KVモードではpartial_updateマージエンジンを使用します。 |
tenant |
| enable_auto_split | True | KVモードでは自動パーティション分割機能を有効にします。 | tenant |
KVシナリオ例
sysテナントで以下のステートメントを実行し、クラスタレベルの構成パラメータを設定します。
ALTER SYSTEM SET enable_record_trace_log = False; ALTER SYSTEM SET large_query_threshold = '0ms'; ALTER SYSTEM SET enable_syslog_recycle = True; ALTER SYSTEM SET max_syslog_file_count = 300;ユーザーテナントで以下のステートメントを実行し、テナントレベルの構成パラメータを設定します。
MySQL モードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET _enable_filter_reordering = False; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE'; ALTER SYSTEM SET enable_auto_split = True;Oracle モードテナントの設定例:
ALTER SYSTEM SET log_transport_compress_all = True; ALTER SYSTEM SET "_enable_filter_reordering" = False; ALTER SYSTEM SET default_table_merge_engine = 'PARTIAL_UPDATE'; ALTER SYSTEM SET enable_auto_split = True;
構成パラメータと変数の確認
SHOW PARAMETERS LIKE 'parameter_name';ステートメントを使用して構成パラメータ情報を照会することができます。例:
SHOW PARAMETERS LIKE 'enable_syslog_recycle';以下のステートメントを使用して、変数情報の照会ができます。
MySQL モード:
SHOW [GLOBAL] VARIABLES LIKE 'variables_name';ステートメントを使用して照会することができます。例:
SHOW VARIABLES LIKE 'ob_query_timeout';SHOW GLOBAL VARIABLES LIKE 'ob_query_timeout';Oracle モード:ビューの
SYS.TENANT_VIRTUAL_SESSION_VARIABLE/SYS.TENANT_VIRTUAL_GLOBAL_VARIABLEを使用して変数情報を照会することができます。例:
SELECT * FROM SYS.TENANT_VIRTUAL_SESSION_VARIABLE WHERE VARIABLE_NAME = 'ob_query_timeout';SELECT * FROM SYS.TENANT_VIRTUAL_GLOBAL_VARIABLE WHERE VARIABLE_NAME = 'ob_query_timeout';
関連ドキュメント
- 構成パラメータと変数の詳細については、構成パラメータとシステム変数の概要を参照してください。
- 構成パラメータの設定方法については、パラメータの設定を参照してください。
- 変数の設定方法については、変数の設定を参照してください。