기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
DFENeptune에서 사용할 통계 관리
참고
에 대한 지원은 Neptune의 DFE 쿼리 엔진에 openCypher 따라 다릅니다.
이 엔진은 Neptune DFE 엔진 릴리스 1.0.3.0에서 랩 모드로 처음 제공되었으며 Neptune 엔진 릴리스 1.0.5.0부터 기본적으로 활성화되었지만 쿼리 힌트와 함께 사용하거나 지원용으로만 사용할 수 있습니다. openCypher
Neptune 엔진 릴리스 DFE 1.1.1.0부터 엔진은 더 이상 랩 모드가 아니며, 이제 인스턴스의 DB 파라미터 그룹에 있는 인스턴스 파라미터를 사용하여 neptune_dfe_query_engine 제어됩니다.
DFE엔진은 Neptune 그래프의 데이터에 대한 정보를 사용하여 쿼리 실행을 계획할 때 효과적인 절충안을 마련합니다. 이 정보는 쿼리 계획의 지침이 될 수 있는 소위 특성 세트와 조건자 통계를 포함하는 통계의 형태를 취합니다.
엔진 릴리스 1.2.1.0부터 또는 엔드포인트를 사용하여 이러한 통계에서 그래프에 대한 요약 정보를 검색할 수 있습니다. GetGraphSummaryAPIsummary
이러한 DFE 통계는 현재 그래프의 데이터가 10% 이상 변경되거나 최신 통계가 10일 이상 경과한 경우 다시 생성됩니다. 그러나 이러한 트리거는 향후 변경될 수 있습니다.
참고
T3
및 T4g
인스턴스에서는 해당 인스턴스 유형의 메모리 용량을 초과할 수 있으므로, 통계 생성이 비활성화됩니다.
다음 엔드포인트 중 하나를 통해 DFE 통계 생성을 관리할 수 있습니다.
https://
(forSPARQL).your-neptune-host
:port
/rdf/statisticshttps://
(그렘린 및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
이전 버전과의 호환성을 위해 계속 지원되고 있지만, 향후 릴리스에서 제거될 수 있습니다.
아래 예제에서 는 이러한 엔드포인트 중 하나를 $STATISTICS_ENDPOINT
나타냅니다. URLs
참고
DFE통계 엔드포인트가 리더 인스턴스에 있는 경우 처리할 수 있는 요청은 상태 요청뿐입니다. 다른 요청은 ReadOnlyViolationException
과 함께 실패합니다.
DFE통계 생성을 위한 크기 제한
현재 다음 크기 제한 중 하나에 도달하면 DFE 통계 생성이 중단됩니다.
생성되는 특성 세트의 수는 50,000개를 초과할 수 없습니다.
생성되는 조건자 통계 수는 100만 개를 초과할 수 없습니다.
이러한 제한은 변경할 수 있습니다.
통계의 DFE 현재 상태
다음 curl
요청을 사용하여 DFE 통계의 현재 상태를 확인할 수 있습니다.
curl -G "$STATISTICS_ENDPOINT"
상태 요청에 대한 응답에는 다음 필드가 포함됩니다.
status
— 요청의 HTTP 반환 코드. 요청이 성공하면 코드는200
입니다. 일반적인 오류 목록은 일반적인 오류 섹션을 참조하세요.-
payload
:autoCompute
– (부울) 자동 통계 생성이 활성화되었는지 여부를 나타냅니다.active
— (Boolean) DFE 통계 생성이 전혀 활성화되었는지 여부를 나타냅니다.statisticsId
– 현재 통계 생성 실행의 ID를 보고합니다.-1
값이 0이면 통계가 생성되지 않았음을 나타냅니다.-
date
— DFE 통계가 가장 최근에 생성된 UTC 시간 (ISO8601 형식)참고
엔진 릴리스 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통계 크기 제한을 초과하는 등의 이유로 통계 생성이 실패한 경우 응답은 다음과 같습니다.
{ "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 클러스터의 Writer 인스턴스가 아닌 리더 인스턴스에 자동 생성을 비활성화하도록 요청하면 요청이 실패하고 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
값 그래프를 보면 통계 계산이 이루어진 시기와 속도를 매우 명확하게 파악할 수 있습니다.
![지표 값 StatsNumStatementsScanned 그래프](images/StatsNumStatementsScanned-graph.png)
계산이 진행 중일 때 그래프의 기울기는 속도를 나타냅니다. 기울기가 가파를수록 통계가 더 빨리 계산된다는 뜻입니다.
그래프가 0에서 평평한 선으로만 그려진 경우 통계 기능은 활성화되었으나 통계가 전혀 계산되지 않은 것입니다. 통계 기능이 비활성화되었거나 통계 계산을 지원하지 않는 엔진 버전을 사용하는 경우에는 StatsNumStatementsScanned
가 존재하지 않습니다.
앞서 설명한 것처럼 통계를 사용하여 통계 계산을 비활성화할 수 있지만 이 계산을 중단하면 통계가 최신 상태로 유지되지 않아 DFE 엔진에 대한 쿼리 계획 생성 성능이 저하될 수 있습니다. API
사용 CloudWatch 방법에 아마존을 이용한 Neptune 모니터링 CloudWatch 대한 자세한 내용은 을 참조하십시오.
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
(그렘린의 경우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" }