ScalarDB Core の設定
注記
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
このページでは、ScalarDB Core で使用可能な設定について説明します。
ヒント
ScalarDB Cluster を使用している場合は、代わりに ScalarDB Cluster の設定を参照してください。
一般的な設定
ScalarDB トランザクションマネージャーでは、次の一般的な設定が利用可能です。
transaction_manager
- フィールド:
scalar.db.transaction_manager - 説明: ScalarDB のトランザクションマネージャー。Consensus Commit を使用するには
consensus-commitを指定し、非トランザクションストレージ操作を実行する にはsingle-crud-operationを指定します。single-crud-operationを使用する場合、scalar.db.consensus_commitプレフィックスの下の設定は無視されることに注意してください。 - デフォルト値:
consensus-commit
isolation_level
- フィールド:
scalar.db.consensus_commit.isolation_level - 説明: Consensus Commit に使用される分離レベル。
SNAPSHOT、SERIALIZABLEまたはREAD_COMMITTEDのいずれかを指定できます。 - デフォルト値:
SNAPSHOT
coordinator.namespace
- フィールド:
scalar.db.consensus_commit.coordinator.namespace - 説明: Consensus Commit に使用される Coordinator テーブルの名前空間名。
- デフォルト値:
coordinator
パフォーマンス関連の設定
Consensus Commit トランザクションマネージャーでは、次のパフォーマンス関連の設定が利用できます。
parallel_executor_count
- フィールド:
scalar.db.consensus_commit.parallel_executor_count - 説明: 並列実行のためのエグゼキュータ (スレッド) の数。この数値は、ScalarDB Cluster ノード内または ScalarDB Core プロセス内のトランザクション全体のスレッド数の合計を示します。
- デフォルト値:
128
parallel_preparation.enabled
- フィールド:
scalar.db.consensus_commit.parallel_preparation.enabled - 説明: 準備フェーズが並行して実行されるかどうか。
- デフォルト値:
true
parallel_validation.enabled
- フィールド:
scalar.db.consensus_commit.parallel_validation.enabled - 説明: 検証フェーズ (
EXTRA_READ内) が並列で実行されるかどうか。 - デフォルト値:
scalar.db.consensus_commit.parallel_commit.enabledの値
parallel_commit.enabled
- フィールド:
scalar.db.consensus_commit.parallel_commit.enabled - 説明: コミットフェーズが並列で実行されるかどうか。
- デフォルト値:
true
parallel_rollback.enabled
- フィールド:
scalar.db.consensus_commit.parallel_rollback.enabled - 説明: ロールバックフェーズが並列で実行されるかどうか。
- デフォルト値:
scalar.db.consensus_commit.parallel_commit.enabledの値
async_commit.enabled
- フィールド:
scalar.db.consensus_commit.async_commit.enabled - 説明: コミットフェーズが非同期で実行されるかどうか。
- デフォルト値:
false
async_rollback.enabled
- フィールド:
scalar.db.consensus_commit.async_rollback.enabled - 説明: ロールバックフェーズが非同期に実行されるかどうか。
- デフォルト値:
scalar.db.consensus_commit.async_commit.enabledの値
parallel_implicit_pre_read.enabled
- フィールド:
scalar.db.consensus_commit.parallel_implicit_pre_read.enabled - 説明: 暗黙的な事前読み取りが並列で実行されるかどうか。
- デフォルト値:
true
one_phase_commit.enabled
- フィールド:
scalar.db.consensus_commit.one_phase_commit.enabled - 説明: 1フェーズコミット最適化が有効かどうか。
- デフォルト値:
false
coordinator.write_omission_on_read_only.enabled
- フィールド:
scalar.db.consensus_commit.coordinator.write_omission_on_read_only.enabled - 説明: 読み取り専用トランザクションに対して Coordinator テーブルへの書き込み省略最適化を有効にするかどうか。この最適化は、データを変更しない読み取り専用トランザクションに有効であり、Coordinator テーブルへの不要な書き込みを回避します。
- デフォルト値:
true
coordinator.group_commit.enabled
- フィールド:
scalar.db.consensus_commit.coordinator.group_commit.enabled - 説明: トランザクション 状態のコミットがバッチモードで実行されるかどうか。この機能は、2フェーズコミットインターフェースでは使用できません。
- デフォルト値:
false
coordinator.group_commit.slot_capacity
- フィールド:
scalar.db.consensus_commit.coordinator.group_commit.slot_capacity - 説明: グループコミット機能のグループ内のスロットの最大数。値が大きいとグループコミットの効率は向上しますが、待ち時間が増加し、トランザクションの競合が発生する可能性も高くなります。[^1]
- デフォルト値:
20
coordinator.group_commit.group_size_fix_timeout_millis
- フィールド:
scalar.db.consensus_commit.coordinator.group_commit.group_size_fix_timeout_millis - 説明: グループ内のスロットのサイズを固定するためのタイムアウト。値が大きいとグループコミットの効率が向上しますが、待ち時間が増加し、トランザクションの競合が発生する可能性 も高くなります。[^1]
- デフォルト値:
40
coordinator.group_commit.delayed_slot_move_timeout_millis
- フィールド:
scalar.db.consensus_commit.coordinator.group_commit.delayed_slot_move_timeout_millis - 説明: 遅延スロットをグループから別の分離グループに移動して、元のグループが遅延トランザクションの影響を受けないようにするためのタイムアウト。値が大きいとグループコミットの効率が向上しますが、待ち時間が増加し、トランザクションの競合が発生する可能性も高くなります。[^1]
- デフォルト値:
1200
coordinator.group_commit.old_group_abort_timeout_millis
- フィールド:
scalar.db.consensus_commit.coordinator.group_commit.old_group_abort_timeout_millis - 説明: 進行中の古いグループをアボートするためのタイムアウト。値が小さいと、積極的なアボートによってリソースの消費量が減りますが、長時間実行されるトランザクションで不要なアボートが発生する可能性も高くなります。
- デフォルト値:
60000
coordinator.group_commit.timeout_check_interval_millis
- フィールド:
scalar.db.consensus_commit.coordinator.group_commit.timeout_check_interval_millis - 説明: グループコミット関連のタイムアウトをチェックする間隔。
- デフォルト値:
20
coordinator.group_commit.metrics_monitor_log_enabled
- フィールド:
scalar.db.consensus_commit.coordinator.group_commit.metrics_monitor_log_enabled - 説明: グループコミットのメトリックが定期的にログに記録されるかどうか。
- デフォルト値:
false
ストレージ関連の設定
ScalarDB には、複数のストレージ実装をサポートするストレージ (データベース) 抽象化レイヤーがあります。scalar.db.storage プロパティを使用してストレージ実装を指定できます。
注記
複数のストレージの使用の詳細については、マルチストレージ設定を参照してください。
データベースを選択して、各ストレージで使用可能な設定を確認します。
- JDBC データベース
- DynamoDB
- Cosmos DB for NoSQL
- Cassandra
- S3
- Blob Storage
- Cloud Storage
JDBC データベースでは次の設定を使用できます。
storage
- フィールド:
scalar.db.storage - 説明:
jdbcを指定する必要があります。 - デフォルト値: empty
contact_points
- フィールド:
scalar.db.contact_points - 説明: JDBC 接続 URL。
- デフォルト値: empty
username
- フィールド:
scalar.db.username - 説明: データベースにアクセスするためのユーザー名。
- デフォルト値: empty
password
- フィールド:
scalar.db.password - 説明: データベースにアクセスするためのパスワード。
- デフォルト値: empty
jdbc.connection_pool.min_idle
- フィールド:
scalar.db.jdbc.connection_pool.min_idle - 説明: コネクションプール内のアイドルコネクションの最小数。
- デフォルト値:
20
jdbc.connection_pool.max_idle
- フィールド:
scalar.db.jdbc.connection_pool.max_idle - 説明: コネクションプール内でアイドル状態のままにできるコネクションの最大数。
- デフォルト値:
50
jdbc.connection_pool.max_total
- フィールド:
scalar.db.jdbc.connection_pool.max_total - 説明: コネクションプールで同時にアクティブにできるアイドルコネクションと利用中接続の最大合計数。制限がない場合は負の値を使用します。
- デフォルト値:
200
jdbc.prepared_statements_pool.enabled
- フィールド:
scalar.db.jdbc.prepared_statements_pool.enabled - 説明: このプロパティを
trueに設定すると、準備済みステートメントプーリングが有効になります。 - デフォルト値:
false
jdbc.prepared_statements_pool.max_open
- フィールド:
scalar.db.jdbc.prepared_statements_pool.max_open - 説明: ステートメントプールから同時に割り当てることができるオープンステートメントの最大数。制限がない場合は負の値を使用します。
- デフォルト値:
-1
jdbc.isolation_level
- フィールド:
scalar.db.jdbc.isolation_level - 説明: JDBC の分離レベル。
READ_COMMITTED、REPEATABLE_READ、またはSERIALIZABLEを指定できま す。 - デフォルト値: 基盤データベース固有
jdbc.table_metadata.connection_pool.min_idle
- フィールド:
scalar.db.jdbc.table_metadata.connection_pool.min_idle - 説明: テーブルメタデータのコネクションプール内のアイドルコネクションの最小数。
- デフォルト値:
5
jdbc.table_metadata.connection_pool.max_idle
- フィールド:
scalar.db.jdbc.table_metadata.connection_pool.max_idle - 説明: テーブルメタデータのコネクションプール内でアイドル状態のままにできるコネクションの最大数。
- デフォルト値:
10
jdbc.table_metadata.connection_pool.max_total
- フィールド:
scalar.db.jdbc.table_metadata.connection_pool.max_total - 説明: テーブルメタデータのコネクションプールで同時にアクティブにできるアイドルコネクションと利用中接続の最大合計数。制限がない場合は負の値を使用します。
- デフォルト値:
25
jdbc.admin.connection_pool.min_idle
- フィールド:
scalar.db.jdbc.admin.connection_pool.min_idle - 説明: 管理者のコネクションプール内のアイドルコネクションの最小数。
- デフォルト値:
5
jdbc.admin.connection_pool.max_idle
- フィールド:
scalar.db.jdbc.admin.connection_pool.max_idle - 説明: 管理者のコネクションプール内でアイドル状態のままにできるコネクションの最大数。
- デフォルト値:
10
jdbc.admin.connection_pool.max_total
- フィールド:
scalar.db.jdbc.admin.connection_pool.max_total - 説明: 管理者のコネクションプールで同時にアクティブにできるアイドルコネクションと利用中接続の最大合計数。制限がない場合は負の値を使用します。
- デフォルト値:
25
jdbc.mysql.variable_key_column_size
- フィールド:
scalar.db.jdbc.mysql.variable_key_column_size - 説明: MySQL で主キーまたはセカンダリキーとして使用される場合の TEXT 列と BLOB 列の列サイズ。最小 64 バイト。
- デフォルト値:
128
jdbc.oracle.variable_key_column_size
- フィールド:
scalar.db.jdbc.oracle.variable_key_column_size - 説明: Oracle で主キーまたはセカンダリキーとして使用される場合の TEXT 列と BLOB 列の列サイズ。最小 64 バイト。
- デフォルト値:
128
jdbc.oracle.time_column.default_date_component
- フィールド:
scalar.db.jdbc.oracle.time_column.default_date_component - 説明: Oracle で
TIMEデータを格納するために使用される日付コンポーネントの値。Oracle には日付コンポーネントなしで時間のみを格納するデータ型がないため、ScalarDB は比較と並べ替えを容易にするために、同じ日付コンポーネント値を持つTIMEデータを保存します。 - デフォルト値:
1970-01-01
jdbc.db2.variable_key_column_size
- フィールド:
scalar.db.jdbc.db2.variable_key_column_size - 説明: IBM Db2 で主キーまたはセカンダリキーとして使用される場合の TEXT 列と BLOB 列の列サイズ。最小 64 バイト。
- デフォルト値:
128
jdbc.db2.time_column.default_date_component
- フィールド:
scalar.db.jdbc.db2.time_column.default_date_component - 説明: IBM Db2 で
TIMEデータを格納するために使用される日付コンポーネントの値。ScalarDB のTIME型データを格納するために IBM Db2 の TIMESTAMP 型が使用されるため (小数秒の精度を提供するため)、ScalarDB は比較と並べ替えを容易にするために、同じ日付コンポーネント値を持つTIMEデータを保存します。 - デフォルト値:
1970-01-01
注記
SQLite3
SQLite3 を JDBC データベースとして使用している場合は、scalar.db.contact_points を次のように設定する必要があります。
scalar.db.contact_points=jdbc:sqlite:<SQLITE_DB_FILE_PATH>?busy_timeout=10000
他の JDBC データベースとは異なり、SQLite3 doesn't fully support concurrent access。SQLITE_BUSY によって内部的に頻繁に発生するエラーを回避するには、busy_timeout パラメータを設定することをお勧めします。