ユーザーがさまざまな業務シナリオにおいてOceanBaseデータベースで良好なパフォーマンスを得られるようにするため、OceanBaseは過去の多くの実環境でのチューニング経験に基づき、各業務シナリオにおける主要なパラメータと変数の推奨設定をまとめました。OceanBaseクラウドプラットフォーム(OceanBase Cloud Platform、OCP)では、テナント作成時にパラメータ設定でパラメータテンプレートを選択できます。ユーザーが選択したパラメータテンプレートに基づき、対応するバージョンのカーネルRPMパッケージの内容を読み取って、該当するパラメータ値を取得します。OCPを使用してテナント情報を作成する方法については、プライマリテナントの新規作成を参照してください。
本記事では、主にOceanBaseデータベースをCLIでデプロイした後、異なる業務アプリケーションシナリオにおける主要なパラメータとシステム変数の推奨設定について説明します。
パラメータ設定テンプレート
OceanBaseデータベースのRPMパッケージをインストールすると、/home/admin/oceanbase/etcディレクトリで、さまざまな業務シナリオにおける推奨パラメータ設定のテンプレートを確認できます。
default_parameter.json:パラメータの推奨設定が保存されています。default_system_variable.json:変数の推奨設定が保存されています。
注意
本記事で紹介するパラメータ情報は、OceanBaseデータベースV4.4.2バージョンの設定テンプレートに基づいて更新されています。他のバージョンの推奨設定については、該当バージョンのインストールパッケージに含まれる設定ファイルから最新のパラメータ構成を入手してください。
パラメータ設定ファイルのテンプレート分類:
express_oltp:このテンプレートは、取引、決済コアシステム、インターネット高スループットアプリケーションなどのワークロードタイプに適用されます。外部キー制約、ストアドプロシージャ、長トランザクション、大規模トランザクション、複雑な結合や複雑なサブクエリなどの制限がないことを前提とします。このシナリオにおける関連する推奨設定の詳細については、以下のexpress_oltpを参照してください。complex_oltp:このテンプレートは、銀行、保険システムなどのワークロードに適用されます。通常、複雑な結合、複雑な相関サブクエリ、PLで記述されたバッチ処理ジョブが含まれ、長トランザクションや大規模トランザクションも存在します。短期間で実行されるクエリでは、パラレル実行が採用されることがあります。このシナリオにおける関連する推奨設定の詳細については、以下のcomplex_oltpを参照してください。olap:このテンプレートは、主にリアルタイムデータウェアハウス分析アプリケーションに使用されます。このシナリオにおける関連する推奨設定の詳細については、以下のolapを参照してください。htap:このテンプレートは、OLAPとOLTPの混合ワークロードシナリオに適用されます。運用データのリアルタイム分析、不正行為検出、個別化推薦などが含まれますが、これらに限定されません。このシナリオにおける関連する推奨設定の詳細については、以下のhtapを参照してください。kv:このテンプレートは、HBase互換およびKey-Valueテーブルモデルアクセスモード、単一パーティションアクセス、SQL層なしに適用されます。このシナリオは通常、極めて高いデータスループット要件を伴い、レイテンシに非常に敏感です。このシナリオにおける関連する推奨設定の詳細については、以下のkvを参照してください。
express_oltp
このシナリオでは、現在のところ変数設定の推奨事項はありません。
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 | partial_update マージエンジンを使用してシンプルなOLTPワークロードを処理します。 |
tenant |
| default_micro_block_format_version | 1 | 古いマイクロブロックストレージ形式(既存のFlat形式)を使用してシンプルなOLTPワークロードを処理します。 | 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'; ALTER SYSTEM SET default_micro_block_format_version = 1;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'; ALTER SYSTEM SET default_micro_block_format_version = 1;
complex_oltp
このシナリオでは、現在のところ変数設定の推奨事項はありません。
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 | partial_updateマージエンジンを使用して複雑なOLTPワークロードを処理します。 |
tenant |
| default_micro_block_format_version | 1 | 古いマイクロブロックストレージ形式(既存のFlat形式)を使用して複雑なOLTPワークロードを処理します。 | 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'; ALTER SYSTEM SET default_micro_block_format_version = 1;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'; ALTER SYSTEM SET default_micro_block_format_version = 1;
olap
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 | 単一読み取りIOリクエストの最大バッチサイズ。 | tenant |
| _io_read_redundant_limit_percentage | 50 | 単一読み取りIOリクエスト内の冗長データの最大割合(冗長データとは、バッチの中央で必ず読み取る必要があるが、キャッシュヒットまたはインデックススキップでフィルタリングされたデータブロックを指します)。 | tenant |
| _io_callback_thread_count | 64 | IOコールバックスレッドの数。 | tenant |
| default_load_mode | DISABLED | デフォルトではダイレクトロード機能は有効になりません。ダイレクトロードを使用するシナリオがある場合は、Hintで指定できます。 | tenant |
| direct_load_allow_fallback | False | 典型的なOLAPワークロードでは、ダイレクトロードが失敗した場合は直接エラーを返し、通常のインポート方式へのフォールバックは許可されません。 | tenant |
| _nested_loop_join_enabled | False | 典型的なOLAPワークロードでは、ネストされたループ結合を無効にします。 | tenant |
| default_table_organization | HEAP | デフォルトのヒープテーブルです。データは書き込み順に格納され、主キーサイクルとは関係ありません。 | tenant |
| default_table_merge_engine | DELETE_INSERT | delete_insert マージエンジンを使用してOLAPワークロードを処理します。 |
tenant |
| default_micro_block_format_version | 1 | 古いマイクロブロックストレージ形式(元のFlat形式)を使用してOLAPワークロードを処理します。 | tenant |
| _force_subquery_unnest | True | このパラメータは、オプティマイザーがサブクエリを結合形に書き換えようとする際に、事前仮定に基づいて一部の書き換え機会を放棄するかどうかを制御します。OLAPモードでは、この値をTrueに設定すると、オプティマイザーは事前の削減ルールを一切考慮せず、正確性を保証する前提で書き換え可能なサブクエリはすべて結合形に書き換えられます。 |
tenant |
| max_partition_num | 65536 | AP/HTAPワークロードの各テーブルの最大パーティション数を65536に増やし、時間範囲およびハッシュサブパーティションによる大規模なパーティショニングをサポートします。これはデータウェアハウスやリアルタイム分析のシナリオで一般的です。 | tenant |
| default_skip_index_level | 1 | OLAPワークロードでは、テーブル作成時にskip_index_levelがデフォルトで1に設定されます。 |
tenant |
OLAPシナリオにおける変数の推奨値の詳細は以下のとおりです:
変数 |
推奨値 |
推奨値の説明 |
レベル |
|---|---|---|---|
| ob_query_timeout | 604800000000 | 7日間に設定します。 | tenant |
| ob_trx_timeout | 604800000000 | 7日間に設定します。 | tenant |
| parallel_min_scan_time_threshold | 10 | 実行時間が100ミリ秒以上のクエリに対して、最適な並列実行パフォーマンスを提供します。 | tenant |
| ob_sql_work_area_percentage | 30 | より大きなワークエリアメモリを設定すると、メモリリークによるコストを削減できます。 | tenant |
| parallel_degree_policy | AUTO | Auto DOPポリシーを有効にすることを表します。 Auto DOPの詳細については、Auto DOPを参照してください。 |
tenant |
| collation_server | utf8mb4_bin | 他の照合と比較して、バイナリ照合を使用するとパフォーマンスが20%向上します。 | tenant |
| collation_connection | utf8mb4_bin | 他の照合と比較して、バイナリ照合を使用するとパフォーマンスが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 default_micro_block_format_version = 1; ALTER SYSTEM SET _force_subquery_unnest = True; ALTER SYSTEM SET max_partition_num = 65536; ALTER SYSTEM SET default_skip_index_level = 1;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 default_micro_block_format_version = 1; ALTER SYSTEM SET "_force_subquery_unnest" = True; ALTER SYSTEM SET max_partition_num = 65536; ALTER SYSTEM SET "default_skip_index_level" = 1;
ユーザーテナントで以下のステートメントを実行し、テナントレベル変数を設定します。
MySQLテナントの設定例:
SET GLOBAL ob_query_timeout = 604800000000; SET GLOBAL ob_trx_timeout = 604800000000; SET GLOBAL parallel_min_scan_time_threshold = 10; SET GLOBAL ob_sql_work_area_percentage = 30; SET GLOBAL parallel_degree_policy = AUTO; 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_min_scan_time_threshold = 10; SET GLOBAL ob_sql_work_area_percentage = 30; SET GLOBAL parallel_degree_policy = AUTO; SET GLOBAL collation_server = utf8mb4_bin; SET GLOBAL collation_connection = utf8mb4_bin;
htap
このシナリオでは、現在のところ変数設定の推奨事項はありません。
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 テーブルモードが使用されます。 |
tenant |
| default_micro_block_format_version | 1 | 古いマイクロブロックストレージ形式(既存のFlat形式)を使用して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 default_micro_block_format_version = 1; 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 default_micro_block_format_version = 1; ALTER SYSTEM SET max_partition_num = 65536;
kv
このシナリオでは、現在のところ変数設定の推奨事項はありません。
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 |
| default_micro_block_format_version | 1 | 古いマイクロブロックストレージ形式(既存のFlat形式)を使用してKVモードを処理します。 | 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 default_micro_block_format_version = 1; 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 default_micro_block_format_version = 1; 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';
関連ドキュメント
- 構成パラメータと変数の詳細については、構成パラメータとシステム変数の概要を参照してください。
- 構成パラメータの設定方法については、パラメータの設定を参照してください。
- 変数の設定方法については、変数の設定を参照してください。