기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
사용할 Neptune DFE에 대한 통계 관리
참고
openCypher 지원은 Neptune의 DFE 쿼리 엔진에 따라 다릅니다.
DFE 엔진은 Neptune 엔진 릴리스 1.0.3.0의 랩 모드에서 처음 사용할 수 있었으며, Neptune 엔진 릴리스 1.0.5.0부터 기본적으로 활성화되었지만 쿼리 힌트 및 for openCypher 지원에만 사용할 수 있습니다.
Neptune 엔진 릴리스 1.1.1.0부터 DFE 엔진은 더 이상 랩 모드가 아니며 이제 neptune_dfe_query_engine 인스턴스의 DB 파라미터 그룹에서 인스턴스 파라미터를 사용하여 제어됩니다.
DFE 엔진은 Neptune 그래프의 데이터에 대한 정보를 사용하여 쿼리 실행을 계획할 때 효과적인 균형을 이룹니다. 이 정보는 쿼리 계획의 지침이 될 수 있는 소위 특성 세트와 조건자 통계를 포함하는 통계의 형태를 취합니다.
엔진 릴리스 1.2.1.0부터 GetGraphSummary API 또는 summary
엔드포인트를 사용하여 이러한 통계에서 그래프에 대한 요약 정보를 검색할 수 있습니다.
이러한 DFE 통계는 현재 그래프의 데이터 중 10% 이상이 변경되거나 최신 통계가 10일 이상 경과할 때마다 다시 생성됩니다. 그러나 이러한 트리거는 향후 변경될 수 있습니다.
참고
T3
및 T4g
인스턴스에서는 해당 인스턴스 유형의 메모리 용량을 초과할 수 있으므로, 통계 생성이 비활성화됩니다.
다음 엔드포인트 중 하나를 통해 DFE 통계 생성을 관리할 수 있습니다.
https://
(SPARQL의 경우).your-neptune-host
:port
/rdf/statisticshttps://
(Gremlin 및 openCypher의 경우) 및 대체 버전:your-neptune-host
:port
/propertygraph/statisticshttps://
.your-neptune-host
:port
/pg/statistics
참고
엔진 릴리스 1.1.1.0부터 Gremlin 통계 엔드포인트(https://
)는 더 이상 사용되지 않고, your-neptune-host
:port
/gremlin/statisticspropertygraph
또는 pg
엔드포인트가 선호됩니다. 이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.
엔진 릴리스 1.2.1.0부터 SPARQL 통계 엔드포인트(https://
)는 your-neptune-host
:port
/sparql/statisticsrdf
엔드포인트에 유리하게 사용되지 않습니다. 이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.
아래 예제에서는 이러한 엔드포인트 URLs를 $STATISTICS_ENDPOINT
나타냅니다.
참고
DFE 통계 엔드포인트가 리더 인스턴스에 있는 경우 처리할 수 있는 유일한 요청은 상태 요청입니다. 다른 요청은 ReadOnlyViolationException
과 함께 실패합니다.
DFE 통계 생성의 크기 제한
현재 다음 크기 제한 중 하나에 도달하면 DFE 통계 생성이 중지됩니다.
생성되는 특성 세트의 수는 50,000개를 초과할 수 없습니다.
생성되는 조건자 통계 수는 100만 개를 초과할 수 없습니다.
이러한 제한은 변경할 수 있습니다.
DFE 통계의 현재 상태
다음 curl
요청을 사용하여 DFE 통계의 현재 상태를 확인할 수 있습니다.
curl -G "$STATISTICS_ENDPOINT"
상태 요청에 대한 응답에는 다음 필드가 포함됩니다.
status
- 요청의 HTTP 반환 코드입니다. 요청이 성공하면 코드는200
입니다. 일반적인 오류 목록은 일반적인 오류 섹션을 참조하세요.-
payload
:autoCompute
– (부울) 자동 통계 생성이 활성화되었는지 여부를 나타냅니다.active
– (부울) DFE 통계 생성이 활성화되었는지 여부를 나타냅니다.statisticsId
– 현재 통계 생성 실행의 ID를 보고합니다.-1
값이 0이면 통계가 생성되지 않았음을 나타냅니다.-
date
- DFE 통계가 가장 최근에 생성된 ISO UTC 시간이며 Word 8601 형식입니다.참고
엔진 릴리스 1.2.1.0 이전에는 분 단위의 정밀도로 표시되었지만, 엔진 릴리스 1.2.1.0부터는 밀리초 정밀도로 표시됩니다(예:
2023-01-24T00:47:43.319Z
). note
– 통계가 유효하지 않은 경우의 문제에 대한 참고 사항입니다.-
signatureInfo
– 통계에서 생성된 특성 세트에 대한 정보가 들어 있습니다(엔진 릴리스 1.2.1.0 이전에는 이 필드에summary
이름이 지정됨). 일반적으로 다음과 같은 조치는 직접 실행할 수 없습니다.signatureCount
– 모든 특성 세트의 총 서명 수.instanceCount
– 특성 세트 인스턴스의 총 수.predicateCount
– 고유한 조건자의 총 수.
통계가 생성되지 않은 경우 상태 요청에 대한 응답은 다음과 같습니다.
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : -1 } }
DFE 통계를 사용할 수 있는 경우 응답은 다음과 같습니다.
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : true, "statisticsId" : 1588893232718, "date" : "2020-05-07T23:13Z", "summary" : { "signatureCount" : 5, "instanceCount" : 1000, "predicateCount" : 20 } } }
예를 들어 통계 크기 제한을 초과했기 때문에 DFE 통계 생성에 실패한 경우 응답은 다음과 같습니다. DFE 통계 생성의 크기 제한
{ "status" : "200 OK", "payload" : { "autoCompute" : true, "active" : false, "statisticsId" : 1588713528304, "date" : "2020-05-05T21:18Z", "note" : "Limit reached: Statistics are not available" } }
DFE 통계 자동 생성 비활성화
기본적으로 DFE를 활성화하면 DFE 통계 자동 생성이 활성화됩니다.
다음과 같이 자동 생성을 비활성화할 수 있습니다.
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "disableAutoCompute" }'
요청이 성공하면 HTTP 응답 코드는 200
이고 응답은 입니다.
{ "status" : "200 OK" }
상태 요청을 실행하고 응답의 autoCompute
필드가 false
로 설정되어 있는지 확인하여 자동 생성이 비활성화되었는지 확인할 수 있습니다.
통계 자동 생성을 비활성화해도 진행 중인 통계 계산은 종료되지 않습니다.
DB 클러스터의 라이터 인스턴스가 아닌 리더 인스턴스에 대한 자동 생성을 비활성화하도록 요청하면 HTTP 반환 코드 400으로 요청이 실패하고 다음과 같이 출력됩니다.
{ "detailedMessage" : "Writes are not permitted on a read replica instance", "code" : "ReadOnlyViolationException", "requestId":"8eb8d3e5-0996-4a1b-616a-74e0ec32d5f7" }
기타 일반적인 오류 목록은 일반적인 오류 섹션을 참조하세요.
DFE 통계 자동 생성 다시 활성화
기본적으로 DFE 통계의 자동 생성은 DFE를 활성화할 때 이미 활성화됩니다. 자동 생성을 비활성화한 경우 나중에 다음과 같이 다시 활성화할 수 있습니다.
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "enableAutoCompute" }'
요청이 성공하면 HTTP 응답 코드는 200
이고 응답은 입니다.
{ "status" : "200 OK" }
상태 요청을 실행하고 응답의 autoCompute
필드가 true
로 설정되어 있는지 확인하여 자동 생성이 활성화되었는지 확인할 수 있습니다.
DFE 통계 생성을 수동으로 트리거
다음과 같이 DFE 통계 생성을 수동으로 시작할 수 있습니다.
curl -X POST "$STATISTICS_ENDPOINT" -d '{ "mode" : "refresh" }'
요청이 성공하면 출력은 다음과 같으며 HTTP 반환 코드는 200입니다.
{ "status" : "200 OK", "payload" : { "statisticsId" : 1588893232718 } }
출력의 statisticsId
는 현재 진행 중인 통계 생성 실행의 ID입니다. 요청 당시 실행이 이미 처리 중이었던 경우 요청은 새 실행을 시작하지 않고 해당 실행의 ID를 반환합니다. 한 번에 하나의 통계 생성 실행만 수행될 수 있습니다.
DFE 통계가 생성되는 동안 장애 조치가 발생하면 새 라이터 노드가 마지막으로 처리된 체크포인트를 선택하고 거기서 통계 실행을 재개합니다.
StatsNumStatementsScanned
CloudWatch 지표를 사용하여 통계 계산 모니터링
StatsNumStatementsScanned
CloudWatch 지표는 서버가 시작된 이후 통계 계산을 위해 스캔된 총 문 수를 반환합니다. 각 통계 계산 조각에서 업데이트됩니다.
통계 계산이 트리거될 때마다 이 수치는 증가하며 계산이 수행되지 않을 때는 일정하게 유지됩니다. 따라서 시간 경과에 따른 StatsNumStatementsScanned
값 그래프를 보면 통계 계산이 이루어진 시기와 속도를 매우 명확하게 파악할 수 있습니다.
계산이 진행 중일 때 그래프의 기울기는 속도를 나타냅니다. 기울기가 가파를수록 통계가 더 빨리 계산된다는 뜻입니다.
그래프가 0에서 평평한 선으로만 그려진 경우 통계 기능은 활성화되었으나 통계가 전혀 계산되지 않은 것입니다. 통계 기능이 비활성화되었거나 통계 계산을 지원하지 않는 엔진 버전을 사용하는 경우에는 StatsNumStatementsScanned
가 존재하지 않습니다.
앞에서 언급한 것처럼 통계 API를 사용하여 통계 계산을 비활성화할 수 있지만이 기능을 끄면 통계가 최신 상태가 되지 않아 DFE 엔진의 쿼리 계획 생성이 잘못될 수 있습니다.
CloudWatch 사용 방법에 대한 자세한 내용은 Amazon CloudWatch를 사용하여 Neptune 모니터링 섹션을 참조하세요.
DFE 통계 엔드포인트에서 AWS Identity and Access Management (IAM) 인증 사용
awscurl
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db
또는 예를 들어 다음을 포함하는 라는 JSON 파일을 생성할 수 request.json
있습니다.
{ "mode" : "refresh" }
그런 다음 아래와 같이 통계 생성을 수동으로 시작할 수 있습니다.
awscurl "$STATISTICS_ENDPOINT" \ --region
(your region)
\ --service neptune-db \ -X POST -d @request.json
DFE 통계 삭제
통계 엔드포인트에 HTTP DELETE를 요청하여 데이터베이스의 모든 통계를 삭제할 수 있습니다.
curl -X "DELETE" "$STATISTICS_ENDPOINT"
유효한 HTTP 반환 코드는 다음과 같습니다.
-
200
– 삭제에 성공했습니다.이 경우 일반적인 응답은 다음과 같습니다.
{ "status" : "200 OK", "payload" : { "active" : false, "statisticsId" : -1 } }
-
204
– 삭제할 통계가 없습니다.이 경우 응답은 비어 있습니다(응답 없음).
리더 노드의 통계 엔드포인트로 삭제 요청을 보내면 ReadOnlyViolationException
이 발생합니다.
DFE 통계 요청에 대한 일반적인 오류 코드
다음은 통계 엔드포인트에 요청할 때 발생할 수 있는 일반적인 오류 목록입니다.
AccessDeniedException
– 반환 코드:400
. 메시지:Missing Authentication Token
.BadRequestException
(Gremlin 및 openCypher의 경우) - 반환 코드:400
. 메시지:Bad route: /pg/statistics
.BadRequestException
(RDF 데이터의 경우) - 반환 코드:400
. 메시지:Bad route: /rdf/statistics
.InvalidParameterException
– 반환 코드:400
. 메시지:Statistics command parameter 'mode' has unsupported value '
.the invalid value
'MissingParameterException
– 반환 코드:400
. 메시지:Content-type header not specified.
.ReadOnlyViolationException
– 반환 코드:400
. 메시지:Writes are not permitted on a read replica instance
.
예를 들어 DFE 및 통계가 활성화되지 않은 상태에서 요청을 하면 다음과 같은 응답을 받게 됩니다.
{ "code" : "BadRequestException", "requestId" : "b2b8f8ee-18f1-e164-49ea-836381a3e174", "detailedMessage" : "Bad route: /sparql/statistics" }