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_partitionpartkey 列转换为文本列名称
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_partitionsdrop_old_time_partitions 这类函数所管理的每个分区的相关信息

后续步骤