다음을 통해 공유


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

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

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

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

  • 자동 진공 튜닝: 이 함수는 블로트 비율을 추적하고 그에 따라 자동 진공 설정을 튜닝합니다. 워크로드 중단을 방지하기 위해 현재 및 예상 리소스 사용량을 모두 고려합니다.
  • 쓰기 튜닝: 이 함수는 쓰기 작업의 양과 패턴을 모니터링하고 쓰기 성능에 영향을 미치는 매개 변수를 수정합니다. 이러한 조정은 시스템 성능과 안정성을 모두 향상시켜 잠재적인 문제를 적극적으로 방지합니다.

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

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

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

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

지능형 튜닝이 시작되는 곳입니다. 데이터베이스를 수동으로 감독하고 튜닝하는 대신 지능형 튜닝을 사용하여 데이터베이스를 자동으로 모니터링하고 튜닝할 수 있습니다. 그러면 다른 중요한 작업에 집중할 수 있습니다.

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

쓰기 튜닝 함수는 쓰기 작업의 수량과 트랜잭션 패턴을 관찰합니다. bgwriter_delay, checkpoint_completion_target, max_wal_sizemin_wal_size와 같은 매개 변수를 지능적으로 조정합니다. 이를 통해 쓰기 부하가 높은 경우에도 시스템 성능과 안정성이 향상됩니다.

지능형 튜닝을 사용하면 Azure Database for PostgreSQL 유연한 서버를 사용하여 데이터베이스의 최적 성능을 유지함으로써 귀중한 시간과 리소스를 절약할 수 있습니다.

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

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

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

자동 진공 튜닝

지능형 튜닝은 자동 진공과 관련된 5개 매개 변수(autovacuum_vacuum_scale_factor, autovacuum_cost_limit, autovacuum_naptime, autovacuum_vacuum_thresholdautovacuum_vacuum_cost_delay)를 튜닝합니다. 이러한 매개 변수는 다음과 같은 구성 요소를 조절합니다.

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

Important

지능형 튜닝은 개별 테이블 수준이 아닌 서버 수준에서 자동 진공 관련 매개 변수를 수정합니다. 또한 자동 진공이 꺼진 경우 지능형 튜닝이 올바르게 작동할 수 없습니다. 프로세스를 최적화하기 위한 지능형 튜닝을 위해서는 자동 진공 기능을 사용하도록 설정해야 합니다.

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

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

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

반면에 블로트가 최소화되고 자동 진공 프로세스가 너무 공격적인 경우 지능형 튜닝을 통해 지연, 배율, naptime과 같은 매개 변수가 늘어날 수 있습니다. 이러한 균형은 부풀림을 최소화하고 자동 진공 프로세스가 리소스를 효율적으로 사용하도록 보장합니다.

쓰기 튜닝

지능형 튜닝은 쓰기 튜닝과 관련된 네 가지 매개 변수(bgwriter_delay, checkpoint_completion_target, max_wal_sizemin_wal_size)를 튜닝합니다.

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

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

checkpoint_completion_target 매개 변수는 Azure Database for PostgreSQL 유연한 서버가 지원하는 두 번째 쓰기 메커니즘, 특히 검사점 프로세스의 일부입니다. 검사점은 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가 있는 범용 및 메모리 최적화 서버 컴퓨팅 계층에 대해 지원됩니다. 버스트 가능 서버 컴퓨팅 계층은 지원되지 않습니다.

다음 단계