Azure Database for PostgreSQL - 유연한 서버에서 인텔리전트 튜닝 수행

적용 대상: Azure Database for PostgreSQL - 유연한 서버

Azure Database for PostgreSQL 유연한 서버에는 성능을 자동으로 향상시키고 문제를 방지하도록 설계된 지능형 튜닝 기능이 있습니다. 지능형 튜닝은 Azure Database for PostgreSQL 유연한 서버 데이터베이스의 상태 지속적으로 모니터링하고 데이터베이스를 워크로드에 동적으로 조정합니다.

이 기능은 두 가지 자동 튜닝 함수로 구성됩니다.

  • 자동 진공 튜닝: 이 함수는 bloat 비율을 추적하고 그에 따라 자동 진공 설정을 조정합니다. 워크로드 중단을 방지하기 위해 현재 및 예측 리소스 사용량을 모두 고려합니다.
  • 튜닝 작성: 이 함수는 쓰기 작업의 볼륨과 패턴을 모니터링하고 쓰기 성능에 영향을 주는 매개 변수를 수정합니다. 이러한 조정은 잠재적인 복잡성을 사전에 방지하도록 시스템 성능과 안정성을 모두 향상시킵니다.

Azure Portal 또는 Azure CLI를 사용하여 지능형 튜닝을 사용하도록 설정할 수 있습니다.

지능형 튜닝을 하는 이유는 무엇인가요?

자동 진공 프로세스는 Azure Database for PostgreSQL 유연한 서버 데이터베이스의 상태 및 성능을 기본 중요한 부분입니다. "데드" 행이 차지하는 스토리지를 회수하여 공간을 확보하고 데이터베이스를 원활하게 실행하는 데 도움이 됩니다.

데이터베이스 내에서 쓰기 작업을 튜닝하는 작업도 마찬가지로 중요합니다. 이 작업은 일반적으로 데이터베이스 관리자에게 적용됩니다. 데이터베이스를 지속적으로 모니터링하고 쓰기 작업을 미세 조정하는 것은 어려울 수 있으며 시간이 많이 걸릴 수 있습니다. 이 작업은 여러 데이터베이스를 처리할 때 점점 더 복잡해집니다.

여기서 지능형 튜닝 단계를 수행합니다. 데이터베이스를 수동으로 감독하고 튜닝하는 대신 지능형 튜닝을 사용하여 데이터베이스를 자동으로 모니터링하고 튜닝할 수 있습니다. 그런 다음 다른 중요한 작업에 집중할 수 있습니다.

지능형 튜닝의 자동 진공 튜닝 함수는 bloat 비율을 모니터링하고 최적의 리소스 사용률을 위해 필요에 따라 설정을 조정합니다. 데이터베이스의 "클린" 프로세스를 사전에 관리하고 오래된 데이터로 인해 발생할 수 있는 성능 문제를 완화합니다.

쓰기 튜닝 함수는 쓰기 작업의 수량 및 트랜잭션 패턴을 관찰합니다. , 및 .와 같은 bgwriter_delaycheckpoint_completion_targetmax_wal_sizemin_wal_size매개 변수를 지능적으로 조정합니다. 이렇게 하면 높은 쓰기 부하에서도 시스템 성능 및 안정성을 향상시킵니다.

지능형 튜닝을 사용하는 경우 Azure Database for PostgreSQL 유연한 서버에 의존하여 데이터베이스의 최적의 성능을 기본 값진 시간과 리소스를 절약할 수 있습니다.

지능형 튜닝은 어떻게 작동하나요?

지능형 튜닝은 워크로드의 특성에 대해 학습할 뿐만 아니라 CPU 또는 IOPS와 같은 현재 부하 및 리소스 사용량을 추적하는 지속적인 모니터링 및 분석 프로세스입니다. 애플리케이션 워크로드의 정상적인 작업을 방해하지 않습니다.

이 프로세스를 통해 데이터베이스는 인스턴스의 현재 bloat 비율, 쓰기 성능 및 검사포인트 효율성을 파악하여 워크로드에 동적으로 조정할 수 있습니다. 이러한 인사이트를 통해 지능형 튜닝은 워크로드의 성능을 향상시키고 잠재적인 문제를 방지하는 튜닝 작업을 배포합니다.

자동 진공 튜닝

지능형 튜닝은 자동 진공autovacuum_vacuum_scale_factor과 관련된 5개의 매개 변수인 , autovacuum_cost_limit, autovacuum_naptimeautovacuum_vacuum_thresholdautovacuum_vacuum_cost_delay. 이러한 매개 변수는 다음과 같은 구성 요소를 제어합니다.

  • 프로세스를 설정하는 테이블의 소수입니다 VACUUM .
  • 비용 기반 진공 지연 제한입니다.
  • 자동 진공 실행 간의 일시 중지 간격입니다.
  • 프로세스를 시작하는 데 필요한 업데이트된 튜플 또는 데드 튜플의 최소 수입니다 VACUUM .
  • 클린업 라운드 사이의 일시 중지 기간입니다.

Important

지능형 튜닝은 개별 테이블 수준이 아닌 서버 수준에서 자동 진공 관련 매개 변수를 수정합니다. 또한 자동 진공이 꺼져 있으면 지능형 튜닝이 제대로 작동할 수 없습니다. 인텔리전트 튜닝을 통해 프로세스를 최적화하려면 자동 진공 기능을 사용하도록 설정해야 합니다.

자동 진공 디먼은 두 개의 연산(VACUUMANALYZE)을 트리거하지만 지능형 튜닝은 프로세스만 VACUUM 미세 조정합니다. 이 기능은 현재 프로세스를 조정 ANALYZE 하지 않습니다. 이 프로세스는 테이블 내용에 대한 통계를 수집하여 Azure Database for PostgreSQL 유연한 서버 쿼리 플래너가 가장 적합한 쿼리 실행 계획을 선택하는 데 도움이 됩니다.

지능형 튜닝에는 CPU 및 IOPS와 같은 리소스 사용률을 측정하는 보호 기능이 포함되어 있습니다. 인스턴스가 부하가 많은 경우 자동 진공 활동이 증가하지 않습니다. 이러한 방식으로 지능형 튜닝은 효과적인 클린업 작업과 시스템의 전반적인 성능 간에 균형을 유지합니다.

지능형 튜닝이 자동 진공을 최적화하는 경우 라이브 및 데드 튜플에 대한 통계를 사용하여 서버의 평균 팽창을 고려합니다. bloat을 줄이기 위해 지능형 튜닝은 배율 인수 또는 낮잠과 같은 매개 변수를 줄일 수 있습니다. 프로세스를 더 빨리 트리거 VACUUM 하고 필요한 경우 라운드 간의 지연을 줄일 수 있습니다.

반면, bloat이 최소이고 자동 진공 프로세스가 너무 공격적이면 지능형 튜닝은 지연, 배율 인수 및 낮잠과 같은 매개 변수를 증가시킬 수 있습니다. 이 분산은 bloat을 최소화하고 자동 진공 프로세스가 리소스를 효율적으로 사용하는지 확인하는 데 도움이 됩니다.

튜닝 작성

지능형 튜닝은 쓰기 튜닝과 관련된 네 개의 bgwriter_delay매개 변수인 , checkpoint_completion_target, max_wal_sizemin_wal_size.

매개 변수는 bgwriter_delay 백그라운드 기록기 프로세스가 "더티" 버퍼(새 버퍼 또는 수정된 버퍼)를 클린 각성되는 빈도를 결정합니다. 백그라운드 기록기 프로세스는 쓰기 작업을 처리하는 Azure Database for PostgreSQL 유연한 서버의 세 가지 프로세스 중 하나입니다. 다른 하나는 검사pointer 프로세스 및 백 엔드 쓰기(애플리케이션 연결과 같은 표준 클라이언트 프로세스)입니다.

백그라운드 기록기 프로세스의 주요 역할은 기본 검사pointer 프로세스의 부하를 완화하고 백 엔드 쓰기의 부담을 줄이는 것입니다. 매개 변수는 bgwriter_delay 백그라운드 기록기 라운드의 빈도를 제어합니다. 이 매개 변수를 조정하여 DML(데이터 조작 언어) 쿼리의 성능을 최적화할 수도 있습니다.

매개 checkpoint_completion_target 변수는 Azure Database for PostgreSQL 유연한 서버에서 지원하는 두 번째 쓰기 메커니즘, 특히 검사pointer 프로세스의 일부입니다. 검사점은 정의된 일정한 간격 checkpoint_timeout 으로 발생합니다(구성된 공간을 초과하여 강제하지 않는 한). 페이지 쓰기가 급증하여 I/O 시스템이 오버로드되지 않도록 하려면 검사 지점 동안 더티 버퍼를 작성하는 것이 일정 기간 동안 분산됩니다. 매개 변수는 checkpoint_completion_target 기간을 검사포인트 간격의 분수로 지정하는 데 사용하여 checkpoint_timeout 이 기간을 제어합니다.

기본값 checkpoint_completion_target 은 0.9(PostgreSQL 14 이후)입니다. 이 값은 I/O 로드를 최대 기간 동안 분산하므로 일반적으로 가장 적합합니다. 드물게 필요한 WAL(Write-Ahead Logging) 세그먼트 수가 예기치 않게 변동하여 검사 지점이 시간에 완료되지 않을 수 있습니다. 성능에 잠재적인 영향이 있는 이유는 checkpoint_completion_target 지능형 튜닝을 위한 대상 메트릭입니다.

제한 사항 및 알려진 문제

  • 인텔리전트 튜닝은 특정 범위에서만 최적화를 수행합니다. 기능이 아무것도 변경하지 않을 수 있습니다.
  • 지능형 튜닝은 설정을 조정 ANALYZE 하지 않습니다.
  • 자동 진공 튜닝은 현재 4개 이상의 vCore가 있는 범용 및 메모리 최적화 서버 컴퓨팅 계층에 대해 지원됩니다. 버스트 가능 서버 컴퓨팅 계층은 지원되지 않습니다.

다음 단계