Azure Cosmos DB for PostgreSQL 분산 SQL API

적용 대상: PostgreSQL용 Azure Cosmos DB(Citus 데이터베이스 확장에서 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 분산 테이블의 공동 배치를 업데이트하거나 중단합니다.

Columnar 스토리지

이름 설명
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 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 비배포 열에 만들어진 JOIN을 허용합니다.
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 유지 관리 디먼이 pg_stat_statements에서 일치되지 않은 레코드를 citus_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의 이진 serialization 형식(해당하는 경우)을 사용하여 작업자와 데이터를 전송합니다.
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와 같은 함수에서 관리하는 각 파티션에 대한 정보입니다.

다음 단계