Important
Azure Cosmos DB for PostgreSQL は、新しいプロジェクトではサポートされなくなりました。 このサービスは、新しいプロジェクトには使用しないでください。 代わりに、次の 2 つのサービスのいずれかを使用します。
Azure Cosmos DB for NoSQL は、99.999% 可用性サービス レベル アグリーメント (SLA)、インスタント 自動スケール、および複数のリージョン間の自動フェールオーバーを使用する 大規模 なシナリオ向けに設計された分散データベース ソリューションに使用します。
オープンソースの Citus 拡張機能を使用して、シャード化された PostgreSQL 用の Azure Database For PostgreSQL のエラスティック クラスター機能 を使用します。
Azure Cosmos DB for PostgreSQL には、標準の PostgreSQL 以外の機能が含まれています。 次に、関数と構成オプションのカテゴリ別のリファレンスを示します。
- シャード間でのクエリ実行の並列化
- 複数のサーバー間でのシャード化データの管理
- 列指向ストレージを使用したデータの圧縮
- 時系列パーティション分割の自動化
SQL 関数
シャーディング
| 名前 | 説明 |
|---|---|
| alter_distributed_table | 分散テーブルのディストリビューション列、シャード数、またはコロケーション プロパティを変更します |
| citus_copy_shard_placement | 正常な配置のデータを使用して、非アクティブなシャードの配置を修復します |
| citus_schema_distribute | PostgreSQL スキーマを分散スキーマに変換する |
| citus_schema_undistribute | citus_schema_distributeの操作を元に戻す |
| create_distributed_table | PostgreSQL テーブルを分散 (シャード化) テーブルに変換します |
| create_reference_table | すべてのノードにわたって同期されるテーブルの完全なコピーを保持します |
| citus_add_local_table_to_metadata | ローカル テーブルをメタデータに追加して、任意のノードからのクエリを有効にする |
| isolate_tenant_to_new_shard | ディストリビューション列に特定の単一の値を持つ行を保持する、新しいシャードを作成します |
| truncate_local_data_after_distributing_table | テーブルの分散後にすべてのローカル行を切り捨てます |
| undistribute_table | create_distributed_table または create_reference_table の操作を元に戻します |
シャードの再調整
| 名前 | 説明 |
|---|---|
| citus_add_rebalance_strategy |
pg_dist_rebalance_strategy に行を追加します |
| citus_move_shard_placement | 通常は、データベース管理者によって直接呼び出されるのではなく、シャードの再調整時に間接的に使用されます |
| citus_set_default_rebalance_strategy | シャードの再調整時に既定で選択されるように、引数で指定された戦略を変更します |
| get_rebalance_progress |
rebalance_table_shards によって計画および実行された移動が監視されます |
| get_rebalance_table_shards_plan | rebalance_table_shards でのシャード移動の計画を、実行せずに出力します |
| rebalance_table_shards | 指定されたテーブルのシャードを移動して、ワーカー間で均等に分散させます |
併置
| 名前 | 説明 |
|---|---|
| create_distributed_function | 併置シャード近くのワーカーで関数を実行します |
| update_distributed_table_colocation | 分散テーブルのコロケーションを更新または中断します |
カラム型ストレージ
| 名前 | 説明 |
|---|---|
| alter_columnar_table_set | 列形式のテーブルの設定を変更します |
| alter_table_set_access_method | ヒープまたは列形式のストレージ間でテーブルを変換します |
時系列のパーティション分割
| 名前 | 説明 |
|---|---|
| alter_old_partitions_set_access_method | パーティションのストレージ方法を変更します |
| create_time_partitions | 指定間隔のパーティションを作成して特定の期間をカバーします |
| drop_old_time_partitions | 指定されたタイムスタンプより前に間隔がある、すべてのパーティションを削除します |
Informational
| 名前 | 説明 |
|---|---|
| citus_get_active_worker_nodes | アクティブなワーカー ホスト名とポート番号を取得します |
| citus_relation_size | 指定された分散テーブルのすべてのシャードによって使用されているディスク領域を取得します |
| citus_remote_connection_stats | 各リモート ノードへのアクティブな接続の数を表示します |
| citus_stat_statements_reset |
citus_stat_statements からすべての行を削除します |
| citus_table_size | 指定された分散テーブルのすべてのシャードによって使用されているディスク領域を取得します (インデックスは除く) |
| citus_total_relation_size | すべてのインデックスと TOAST データを含む、指定された分散テーブルのすべてのシャードによって使用されている合計ディスク領域を取得します |
| column_to_column_name |
partkey の pg_dist_partition 列をテキストの列名に変換します |
| get_shard_id_for_distribution_column | ディストリビューション列の値に関連付けられているシャード ID を検索します |
サーバー パラメーター
クエリ実行
| 名前 | 説明 |
|---|---|
| citus.all_modifications_commutative | すべてのコマンドに対して共有ロックの要求を許可します |
| citus.count_distinct_error_rate | postgresql-hll 概数カウントのエラー率を調整します |
| citus.enable_repartition_joins | 非ディストリビューション列での結合を許可します |
| citus.enable_repartitioned_insert_select | SELECT ステートメントから行を再パーティション分割して、挿入のためにワーカー間で転送することを許可します |
| citus.limit_clause_row_fetch_count | limit 句の最適化のためにタスクごとにフェッチする行数を設定します |
| citus.local_table_join_policy | ローカルおよび分散テーブル間の結合を実行するときにデータを移動します |
| citus.multi_shard_commit_protocol | ハッシュ分散テーブルで COPY を実行するときに使用するコミット プロトコルを設定します |
| citus.propagate_set_commands | コーディネーターからワーカーに伝達される SET コマンド |
| citus.create_object_propagation | サポートされているオブジェクトに対する、トランザクションでの CREATE ステートメントの動作 |
| citus.use_citus_managed_tables | ワーカー ノード クエリでのローカル テーブルへのアクセスを許可します |
Informational
| 名前 | 説明 |
|---|---|
| citus.explain_all_tasks | EXPLAIN 出力にすべてのタスクを表示させます |
| citus.explain_analyze_sort_method | EXPLAIN ANALYZE の出力内のタスクの並べ替えメソッド |
| citus.log_remote_commands | コーディネーターがワーカー ノードに送信するログ クエリ |
| citus.multi_task_query_log_level | 複数のタスクを生成するクエリのログレベル |
| citus.stat_statements_max |
citus_stat_statements に格納する行の最大数 |
| citus.stat_statements_purge_interval | メンテナンス デーモンが citus_stat_statements で不一致のレコードを pg_stat_statements から削除する頻度を設定します |
| citus.stat_statements_track | ステートメントの追跡を有効または無効にします |
| citus.show_shards_for_app_name_prefixes | シャードを表示したほうが望ましい一部のクライアントに対して、シャードの表示を許可します |
| citus.override_table_visibility | シャードの非表示を有効または無効にします |
ノード間接続管理
| 名前 | 説明 |
|---|---|
| citus.executor_slow_start_interval | 同じワーカー ノードへの接続を開く間の待機時間 (ミリ秒単位) |
| citus.force_max_query_parallelization | 可能な限り多くの接続を開きます |
| citus.max_adaptive_executor_pool_size | セッションあたりのワーカー接続の最大数 |
| citus.max_cached_conns_per_worker | 以降のコマンドを高速化するために、開いたままの接続の数 |
| citus.node_connection_timeout | 接続の確立を待つ最大期間 (ミリ秒単位) を設定します |
データ転送
| 名前 | 説明 |
|---|---|
| citus.enable_binary_protocol | PostgreSQL のバイナリ シリアル化形式 (該当する場合) を使用して、ワーカーとデータを転送します |
| citus.max_intermediate_result_size | プッシュ ダウンできない CTE とサブクエリの中間結果のサイズ (KB 単位) |
Deadlock
| 名前 | 説明 |
|---|---|
| citus.distributed_deadlock_detection_factor | 分散デッドロックを確認するまでの待ち時間を設定します |
| citus.log_distributed_deadlock_detection | 分散デッドロックの検出に関連した処理をサーバー ログに記録するかどうか |
システム テーブル
コーディネーター ノードには、クラスター全体のデータ プロパティとクエリ アクティビティを表示するのに役立つ、メタデータ テーブルとビューが含まれています。
| 名前 | 説明 |
|---|---|
| citus_dist_stat_activity | すべてのノードで実行されている分散クエリ |
| citus_lock_waits | クラスター全体でブロックされたクエリ |
| citus_shards | 各シャードの場所、そのシャードが属するテーブルの種類、およびサイズ |
| citus_stat_statements | クエリの実行方法と対象者に関する統計 |
| citus_tables | すべての分散テーブルと参照テーブルの概要 |
| citus_worker_stat_activity | ワーカーに対するクエリ (個々のシャードでのタスクを含む) |
| pg_dist_colocation | どのテーブルのシャードをまとめて配置する必要があるか |
| pg_dist_node | クラスター内のワーカー ノードに関する情報 |
| pg_dist_object | コーディネーター ノード上で作成され、ワーカー ノードに伝達された型や関数などのオブジェクトの一覧が含まれています |
| pg_dist_placement | ワーカー ノード上のシャード レプリカの場所 |
| pg_dist_rebalance_strategy |
rebalance_table_shards がシャードを移動する場所を決定するために使用できる戦略 |
| pg_dist_shard | すべてのシャードのテーブル、ディストリビューション列、および値の範囲 |
| time_partitions |
create_time_partitions や drop_old_time_partitions などの関数によって管理される各パーティションに関する情報 |