중요합니다
Azure Cosmos DB for PostgreSQL은 더 이상 새 프로젝트에 지원되지 않습니다. 새 프로젝트에는 이 서비스를 사용하지 마세요. 대신 다음 두 서비스 중 하나를 사용합니다.
99.999% SLA(가용성 서비스 수준 약정), 인스턴트 자동 크기 조정 및 여러 지역에서 자동 장애 조치(failover)를 사용하는 대규모 시나리오용으로 설계된 분산 데이터베이스 솔루션에는 NoSQL용 Azure Cosmos DB를 사용합니다.
오픈 소스 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 | 간격이 지정된 타임스탬프보다 이전인 모든 파티션을 제거합니다. |
정보 제공
| 속성 | 설명 |
|---|---|
| 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 | 비배포 열에 만들어진 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 | 작업자 노드 쿼리에서 로컬 테이블에 액세스하도록 허용 |
정보 제공
| 속성 | 설명 |
|---|---|
| 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의 이진 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_partitions 및 drop_old_time_partitions와 같은 함수에서 관리하는 각 파티션에 대한 정보입니다. |