인덱스 추가의 비용 / 혜택을 결정하는 방법은 무엇입니까?


10

Craig Ringer 에 따르면 :

일반적으로 참조 측 외래 키 열에 대한 색인을 작성하거나 포함하는 것이 좋습니다. 각 인덱스는 당신이 모든에 성능 비용을 지불하도록 감속이, 아래로 약간 작업을 DML 추가 INSERT, UPDATE또는 DELETE. 인덱스를 거의 사용하지 않으면 가치가 없을 수 있습니다.

인덱스 추가의 이점이 비용을 능가하는지 어떻게 알 수 있습니까?

인덱스 추가 전후에 단위 테스트를 프로파일 링하고 전반적인 성능 향상을 확인합니까? 아니면 더 좋은 방법이 있습니까?


pg_stat_user_indexes색인 사용법에 대한 정보를 표시하여이를 안내합니다. 유지 관리 비용을 추정하기 위해 테이블 ​​쓰기 작업을 살펴볼 수 pg_stat_user_tables있지만 HOT로 인해 모든 업데이트가 인덱스를 만져야 할 필요는 없으므로 약간 과대 평가할 수 있습니다.
Craig Ringer

@CraigRinger, 그것은 매우 도움이됩니다. 감사합니다!
길리

나는 거의 독점적으로 pgBadger에 의존합니다. 그리고 내 직감.
Colin 't Hart

답변:


4

인덱스 사용법은 데이터의 구조와 데이터의 선택성에 따라 다릅니다. 사용하지 않는 쿼리를 만들면 비용이 많이 듭니다. 효과적으로 사용하면 훌륭한 도구입니다. EXPLAIN명령을 계획하거나 계획하고 실행 하는 쿼리 플래너 및 쿼리 플래너 분석 ( )이 있습니다 ( EXPLAIN ANALYZE).

그리고 훌륭한 온라인 서적이 있습니다 : 권장 인덱스 사용법에 대해 인덱스 luke사용하십시오 .


4
엄지 손가락의 규칙은 좋지만이 경우에는 너무 일반적입니다. 내 응용 프로그램의 실제 런타임 동작을 기반으로 인덱스를 추가 / 제거 할 것을 제안하는 구체적인 도구 / 측정을 찾고 있습니다.
길리

어쩌면 이것은 당신이 찾고있는 도구입니다 : enterprisedb.com/products-services-training/products/...
믈라덴 Uzelac

1

경험 법칙을 선택하고 따르십시오. 예를 들어, 항상 외래 키를 참조하는쪽에 인덱스를 만듭니다.

사용자 요구에 따라 성능 기준에 따라 제품 성능을 테스트해야합니다. 예를 들어, 시스템은 분당 100 개의 POST 요청 유형 X의 수신로드를 처리해야합니다.

성능 요구 사항을 충족 할 수없는 경우 모델을 개선하여 해당 프로세스에서 경험 규칙을 어길 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.