Azure Database for PostgreSQL - 유연한 서버에서 인덱스 튜닝으로 생성된 인덱스 권장 사항 사용
인덱스 튜닝은 azure_sys
데이터베이스의 intelligentperformance
스키마 아래에 있는 테이블 집합에 권장 사항을 유지합니다.
현재 이러한 목적을 위해 Azure Portal 페이지 빌드를 사용하거나, 쿼리를 실행하여 azure_sys
데이터베이스의 intelligent performance
내에서 사용할 수 있는 두 개의 뷰에서 데이터를 검색하는 방식으로 해당 정보를 읽을 수 있습니다.
Azure Portal을 통해 인덱스 권장 사항 사용
Azure Portal에 로그인하고 Azure Database for PostgreSQL 유연한 서버 인스턴스를 선택합니다.
메뉴의 지능형 성능 섹션에서 인덱스 튜닝 을 선택합니다.
사용 가능한 권장 사항이 있는 경우 인덱스 권장 사항 보기 요약을 선택하여 전체 목록에 액세스합니다.
목록에는 사용 가능한 모든 권장 사항이 표시되며 각 권장 사항에 대한 몇 가지 세부 정보가 표시됩니다. 기본적으로 목록은 마지막 권장 순서를 기준으로 내림차순으로 정렬되며 맨 위에 가장 최근의 권장 사항이 표시됩니다. 그러나 다른 열을 기준으로 정렬할 수 있으며 필터링 상자를 사용하여 데이터베이스, 스키마 또는 테이블 이름에 제공된 텍스트가 포함된 항목에 표시되는 항목 목록을 줄일 수 있습니다.
특정 권장 사항에 대한 추가 정보를 보려면 해당 권장 사항의 이름을 선택하고 인덱스 권장 사항 세부 정보 창이 화면 오른쪽에 열리면 권장 사항에 대한 사용 가능한 모든 세부 정보가 표시됩니다.
azure_sys 데이터베이스에서 사용할 수 있는 뷰를 통해 인덱스 권장 사항 사용
- 인스턴스에 연결할 수 있는 권한이 있는 역할을 사용하여 서버에서 사용할 수 있는
azure_sys
데이터베이스에 연결합니다.public
역할의 구성원은 이러한 보기에서 읽을 수 있습니다. - 뷰에서 쿼리를
sessions
실행하여 권장 사항 세션에 대한 세부 정보를 검색합니다. - 뷰에서 쿼리를
recommendations
실행하여 CREATE INDEX 및 DROP INDEX에 대한 인덱스 튜닝으로 생성된 권장 사항을 검색합니다.
뷰
azure_sys
데이터베이스의 뷰를 활용하면 인덱스 튜닝으로 생성된 인덱스 권장 사항에 편리하게 액세스하고 이러한 항목을 검색할 수 있습니다. 특히, createindexrecommendations
및 dropindexrecommendations
뷰에는 각각 CREATE INDEX 및 DROP INDEX 권장 사항에 대한 자세한 정보가 포함되어 있습니다. 이러한 뷰에는 세션 ID, 데이터베이스 이름, 관리자 유형, 튜닝 세션의 시작 및 중지 시간, 권장 사항 ID, 권장 사항 유형, 권장 사항 이유 및 기타 관련 세부 정보와 같은 데이터가 표시됩니다. 사용자는 이러한 뷰를 쿼리하여 인덱스 튜닝으로 생성된 인덱스 권장 사항에 쉽게 액세스하고 분석할 수 있습니다.
intelligentperformance.sessions
뷰는 sessions
모든 인덱스 튜닝 세션에 대한 모든 세부 정보를 노출합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
session_id | uuid | 시작된 모든 새 튜닝 세션에 할당된 전역 고유 식별자입니다. |
database_name | varchar(64) | 인덱스 튜닝 세션이 실행된 컨텍스트의 데이터베이스 이름입니다. |
session_type | intelligentperformance.recommendation_type | 이 인덱스 튜닝 세션에서 생성할 수 있는 권장 사항 유형을 나타냅니다. 가능한 값은 다음과 CreateIndex DropIndex 같습니다. 형식 세션은 형식의 CreateIndex CreateIndex 권장 사항을 생성할 수 있습니다. 형식 세션 DropIndex 은 권장 사항 또는 ReIndex 형식을 DropIndex 생성할 수 있습니다. |
run_type | intelligentperformance.recommendation_run_type | 이 세션이 시작된 방법을 나타냅니다. 가능한 값은 Scheduled 입니다. 값 index_tuning.analysis_interval 에 따라 자동으로 실행되는 세션에는 실행 형식 Scheduled 이 할당됩니다. |
state | intelligentperformance.recommendation_state | 세션의 현재 상태를 나타냅니다. 가능한 값은 Error , Success , InProgress 입니다. 실행이 실패한 세션은 .로 Error 설정됩니다. 권장 사항을 생성했는지 여부에 관계없이 실행을 올바르게 완료한 세션은 다음과 같이 Success 설정됩니다. 여전히 실행 중인 세션은 .로 InProgress 설정됩니다. |
start_time | 표준 시간대가 없는 타임스탬프 | 이 권장 사항을 생성한 튜닝 세션이 시작된 타임스탬프입니다. |
stop_time | 표준 시간대가 없는 타임스탬프 | 이 권장 사항을 생성한 튜닝 세션이 시작된 타임스탬프입니다. 세션이 진행 중이거나 일부 오류로 인해 중단된 경우 NULL입니다. |
recommendations_count | 정수 | 이 세션에서 생성된 총 권장 사항 수입니다. |
intelligentperformance.recommendations
뷰는 recommendations
기본 테이블에서 데이터를 계속 사용할 수 있는 튜닝 세션에서 생성된 모든 권장 사항에 대한 모든 세부 정보를 표시합니다.
열 이름 | 데이터 형식 | 설명 |
---|---|---|
recommendation_id | 정수 | 전체 서버에서 권장 사항을 고유하게 식별하는 숫자입니다. |
last_known_session_id | uuid | 모든 인덱스 튜닝 세션에는 전역 고유 식별자가 할당됩니다. 이 열의 값은 가장 최근에 이 권장 사항을 생성한 세션의 값을 나타냅니다. |
database_name | varchar(64) | 컨텍스트에서 권장 사항을 생성한 데이터베이스의 이름입니다. |
recommendation_type | intelligentperformance.recommendation_type | 생성된 권장 사항의 유형을 나타냅니다. 가능한 값은 CreateIndex , DropIndex , ReIndex 입니다. |
initial_recommended_time | 표준 시간대가 없는 타임스탬프 | 이 권장 사항을 생성한 튜닝 세션이 시작된 타임스탬프입니다. |
last_recommended_time | 표준 시간대가 없는 타임스탬프 | 이 권장 사항을 생성한 튜닝 세션이 시작된 타임스탬프입니다. |
times_recommended | 정수 | 이 권장 사항을 생성한 튜닝 세션이 시작된 타임스탬프입니다. |
reason | text | 이 권장 사항이 생성된 이유를 정당화하는 이유입니다. |
recommendation_context | json | 권장 사항의 영향을 받는 쿼리에 대한 쿼리 식별자 목록, 권장되는 인덱스 유형, 스키마 이름 및 인덱스가 권장되는 테이블의 이름, 인덱스 열, 인덱스 이름 및 권장 인덱스의 예상 크기(바이트)를 포함합니다. |
인덱스 권장 사항을 만드는 이유
인덱스 튜닝에서 인덱스 생성을 권장하는 경우 다음 이유 중 하나 이상을 추가합니다.
원인 |
---|
Column <column> appear in Join On clause(s) in query <queryId> |
Column <column> appear in Equal Predicate clause(s) in query <queryId> |
Column <column> appear in Non-Equal Predicate clause(s) in query <queryId> |
Column <column> appear in Group By clause(s) in query <queryId> |
Column <column> appear in Order By clause(s) in query <queryId> |
인덱스 권장 사항을 삭제하는 이유
인덱스 튜닝이 잘못된 것으로 표시된 인덱스를 식별하면 다음과 같은 이유로 인덱스를 삭제할 것을 제안합니다.
The index is invalid and the recommended recovery method is to reindex.
인덱스가 잘못된 것으로 표시되는 이유와 시기에 대한 자세한 내용은 PostgreSQL의 REINDEX 공식 설명서를 참조하세요.
인덱스 권장 사항을 삭제하는 이유
인덱스 튜닝이 적어도 설정된 index_tuning.unused_min_period
일 수에 대해 사용되지 않는 인덱스를 검색하면 다음과 같은 이유로 인덱스를 삭제할 것을 제안합니다.
The index is unused in the past <days_unused> days.
인덱스 튜닝이 중복 인덱스를 검색하면 중복 항목 중 하나가 유지되고 나머지 인덱스를 삭제할 것을 제안합니다. 제공된 이유에는 항상 다음과 같은 시작 텍스트가 있습니다.
Duplicate of <surviving_duplicate>.
각 중복 항목을 삭제하기 위해 선택한 이유를 설명하는 다른 텍스트가 뒤에 잇습니다.
원인 |
---|
The equivalent index "<surviving_duplicate>" is a Primary key, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" is a unique index, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" is a constraint, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" is a valid index, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" has been chosen as replica identity, while "<droppable_duplicate>" is not. |
The equivalent index "<surviving_duplicate>" was used to cluster the table, while "<droppable_duplicate>" was not. |
The equivalent index "<surviving_duplicate>" has a smaller estimated size compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has more tuples compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has more index scans compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has been fetched more times compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has been read more times compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has a shorter length compared to "<droppable_duplicate>". |
The equivalent index "<surviving_duplicate>" has a smaller oid compared to "<droppable_duplicate>". |
인덱스가 중복으로 인해 이동식일 뿐만 아니라 적어도 설정된 일 수에 index_tuning.unused_min_period
대해 사용되지 않는 경우 다음 텍스트가 그 이유에 추가됩니다.
Also, the index is unused in the past <days_unused> days.
인덱스 권장 사항 적용
인덱스 권장 사항에는 권장 사항을 구현하기 위해 실행할 수 있는 SQL 문이 포함되어 있습니다.
다음 섹션에서는 특정 권장 사항에 대해 이 문을 가져오는 방법을 보여 줍니다.
문이 있으면 원하는 PostgreSQL 클라이언트를 사용하여 서버에 연결하고 권장 사항을 적용할 수 있습니다.
Azure Portal에서 인덱스 튜닝 페이지를 통해 SQL 문 가져오기
Azure Portal에 로그인하고 Azure Database for PostgreSQL 유연한 서버 인스턴스를 선택합니다.
메뉴의 지능형 성능 섹션에서 인덱스 튜닝 을 선택합니다.
인덱스 튜닝이 이미 권장 사항을 생성했다고 가정하고 인덱스 권장 사항 보기 요약을 선택하여 사용 가능한 권장 사항 목록에 액세스합니다.
권장 사항 목록에서 다음 중 하나를 수행합니다.