안녕하세요,
저희는 Azure에서 “Azure Database for PostgreSQL” 인스턴스를 사용하여 Discourse 기반 포럼을 운영하고 있습니다. 이 서비스의 장점 중 하나는 "데이터베이스 특성"과 사용량에 기반한 성능 권장 사항입니다.
Azure로 마이그레이션한 이후, 누락된 인덱스와 아마도 중복된 인덱스에 대한 몇 가지 힌트를 받게 되었는데, 이를 여러분과 공유하고 싶습니다.
누락된 인덱스를 생성한 후 전반적인 성능이 약간(크진 않지만) 향상된 것을 확인했지만, DROP INDEX 권장 사항은 적용할 수 없었습니다. 이는 향후 업데이트/DB 마이그레이션을 잠재적으로 깨뜨릴 수 있기 때문입니다. 어쨌든, 이러한 인덱스를 삭제해도 안전한지, 아니면 성능에 부정적인 영향을 미칠지 판단하기 어렵습니다.
다음은 Azure가 생성하도록 권장한 인덱스입니다(영향도 “낮음” 및 “중간”):
create-indexes.csv (1.5 KB)
다음은 “이미 커버된” 인덱스에 대한 권장 사항입니다:
요약
public.optimized_images테이블에서index_optimized_images_on_upload_id인덱스를 삭제하세요.
이유: 인덱스가index_optimized_images_on_upload_id_and_width_and_height에 의해 커버됩니다.
public.post_revisions테이블에서index_post_revisions_on_post_id인덱스를 삭제하세요.
이유: 인덱스가index_post_revisions_on_post_id_and_number에 의해 커버됩니다.
public.post_timings테이블에서post_timings_summary인덱스를 삭제하세요.
이유: 인덱스가post_timings_unique에 의해 커버됩니다.
public.topic_links테이블에서index_topic_links_on_topic_id인덱스를 삭제하세요.
이유: 인덱스가unique_post_links에 의해 커버됩니다.
public.post_uploads테이블에서index_post_uploads_on_post_id인덱스를 삭제하세요.
이유: 인덱스가idx_unique_post_uploads에 의해 커버됩니다.
이러한 “DROP” 권장 사항은 신중하게 대해야 한다고 생각합니다. 성능을 향상시키기보다는 전체 DB 크기에만 영향을 미칠 것 같기 때문입니다. 예를 들어, 저희 전체 DB는 약 120GB를 사용하며, 이 모든 권장 사항을 적용해도 422MB만 해제됩니다. Azure 자체도 영향을 "낮음"으로 정의하고 있습니다. 따라서 이는 단순한 정리 작업에 불과한 것으로 보입니다.
위에서 언급했듯이, 이는 성능을 약간 조정하는 데 도움이 될 수 있으므로 여러분과 공유하고자 합니다. 이러한 인덱스 외에도 Azure 서비스를 사용한 기간 동안 Azure가 제공한 다른 권장 사항은 없었습니다.
감사합니다.
Sascha