Azure Cosmos DB for PostgreSQL 分布式 SQL API
适用对象:PostgreSQL 的 Azure Cosmos DB (由 PostgreSQL 的 Citus 数据库扩展提供支持)
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 | 移除间隔落在给定时间戳之前的所有分区 |
信息
名称 | 说明 |
---|---|
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 | 将 pg_dist_partition 的 partkey 列转换为文本列名称 |
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 | 对哈希分布式表执行复制时要使用的提交协议 |
citus.propagate_set_commands | 哪些 SET 命令将从协调器传播到辅助角色 |
citus.create_object_propagation | 受支持对象的事务中 CREATE 语句的行为 |
citus.use_citus_managed_tables | 允许在工作器节点查询中访问本地表 |
信息
名称 | 说明 |
---|---|
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 为单位) |
死锁
名称 | 说明 |
---|---|
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 这类函数所管理的每个分区的相关信息 |