2017-11-23 12 views
0

Google Cloud Spanner에서 분석적 성능을 평가하기 위해 복잡한 SQL 쿼리를 실행하려고합니다. 나는 명령 행 도구 (gcloud spanner databases execute-sql)와 파이썬 클라이언트 라이브러리 (특히 snapshot.execute_sql 메쏘드)를 사용 해왔다. 두 경우 모두 약 25 분 후에 타임 아웃이 발생한다. (내가 더 관심이있는) 파이썬의 경우에는 오류 메시지가 나타나지 않습니다. 인스턴스의 CPU 활동은 0이되고 클라이언트는 결과를 기다리는 중입니다. 명시 적으로 읽기 전용 트랜잭션을 말하지 않는다Spanner에서 읽기 전용 트랜잭션 타임 아웃이 필요한 이유는 무엇입니까?

스패너 문서는 시간 제한이없는, 그러나 1 유래의 대답은 기본적으로 내 질문은, 그래서 그것을

(Way to prevent transaction timeout?)

을 주장 : 정말에 SQL 실행을위한 시간 제한이 있습니까 스패너의 서버 측? 그렇다면 어떻게 조정할 것인가, 명시된 문제의 원인이 될 수있는 것이 없다면?

답변

0

삭제 된 데이터 버전 또는 오래된 데이터 버전을 제거하여 이전 버전의 데이터를 재사용하는 Cloud Spanner의 가비지 수집기 때문일 것으로 생각합니다. 설명서에 따르면 가비지 수집기는 1 시간 이상 된 버전을 삭제합니다. 이는 또한 트랜잭션이 1 시간보다 오래된 데이터 버전을 읽을 수 없다는 것을 의미하며 모든 (읽기 전용) 트랜잭션에 대해 1 시간의 시간 초과를 효과적으로 적용합니다.

설명서의 다음 부분을 참조하십시오. https://cloud.google.com/spanner/docs/reference/rest/v1/TransactionOptions 다음으로 특히 이전 세션. 읽음 시간 소인 및 가비지 수집 부분.

+0

Spanner 가비지가 쿼리의 중간 결과를 수집한다는 것은 의미합니까? 가비지 수집 간격을 조정할 수있는 방법이 있습니까? –

+0

쿼리를 실행하면 암시 적으로 또는 명시 적으로 트랜잭션을 시작할 수도 있습니다. 이 트랜잭션의 모든 읽기는 특정 시간 소인 (트랜잭션 시간 소인)에서 데이터를 읽습니다. Cloud Spanner는 쿼리의 중간 결과를 가비지 수집하지 않지만 Cloud Spanner는 쿼리가 아직 읽지는 않았지만 여전히 읽을 필요가있는 가비지 수집 데이터입니다. 내가 아는 한, 이것을 조정할 가능성은 없습니다. 이것은 또한 당신이하고 싶지 않아야 할 일입니다. 1 시간 이상 지속되는 트랜잭션은 1 시간 이상 데이터를 잠그는 것을 의미합니다. –