2014-01-23 3 views
0

대화식 쿼리에서 실행 시간이 15 초에서 2 분까지 매번 BigQuery에서 실행 시간을 테스트하고 똑같은 쿼리를 실행하는 데 200 달러 이상을 소비했습니다. 아무도 나에게 왜 이런 일이 일어 났는지에 대한 정보를 줄 수 있습니까?BigQuery 실행 시간 불일치

쿼리를 테스트하고 최적화하려면 일관적인 실행 시간이 필요합니다. 실행 시간의 일관성을 예측할 수있는 방법이 있습니까? 나는 실행 시간에서 + 10 %의 차이를 이해할 것입니다.하지만 차이는 1000 %를 훨씬 상회합니다. 쿼리 설정이 실행 시간과 아무 관련이 없기 때문에 아무것도 테스트하거나 최적화 할 수 없습니다. 우리는 4 개의 쿼리를 병렬로 실행하고, 모두 동일한 데이터에 있고, 같은 방식으로 구조화했습니다 (일부 컬럼 이름은 캐싱을 비활성화하기 위해 이름이 바뀌 었습니다). 실행 시간은 13s, 27s, 32s, 44s입니다. 그런 다음 다시 20, 13, 24, 45 등 ... 그런 다음 어느 시점에서 하나의 쿼리 (위와 동일)를 실행하고 실행 시간이 400 초 ... WTF입니까?

BigQuery의 영업팀도 지원 패키지를 구입할 수 없습니다 (지금은 몇 달 전에 처음으로 견적을 요청 했음). 이제 남은 것은 도움을 요청하는 것입니다.

+0

저는 Google의 클라우드 지원 팀 전문가는 아니지만 https://cloud.google.com/support/ 실버 플랜에 가입 할 수있는 것 같습니다. 그보다 높은 수준의 지원을 원하십니까? 그렇다면, 당신이 내게 당신의 이메일 주소를 알려주면 아마 당신에게 연락 할 사람을 찾을 수 있습니다. (공개 포럼에서 전자 메일 주소를 보내지 않으려면 google.com에서 전자 메일 tigani를 사용할 수 있습니다). –

답변

2

실행 시간 불일치에 대해서는 예상했던 것보다 높은 편차가있는 것 같습니다. 빠른 쿼리와 느린 쿼리의 작업 ID를 제공하여 내부 쿼리 통계에서 시간을 어디에 사용했는지 확인할 수 있습니까?

즉,보고있는 시간의 범위에 크게 미치지는 않지만 상당히 많은 쿼리 시간의 변화는 놀랍지 않습니다. 다음은 몇 가지 요인입니다.

  • 테일 대기 시간. 쿼리는 여러 조각으로 나뉘어져 여러 작업자 (데이터 크기에 따라 수천 가지가 될 수 있음)에게 배포됩니다. 데이터는 분산 된 파일 시스템 클러스터에서 읽혀지고 수백 개의 디스크 이상에 데이터가 스트라이프 될 가능성이 있습니다 (테이블의 크기에 따라 다름).

    응답 시간이 가장 느린 구성 요소가 전체 쿼리 시간을 결정합니다. 이것은 테일 레이턴시 (tail latency)라고 불리우며, 스트 레그 러들의 긴 꼬리가 끝날 때까지 기다려야합니다. 우리는 효과를 최소화하고, 데이터를 복제하고, 작업을 재배치하기 위해 많은 노력을 기울이지 만, 여전히 큰 영향을 미칠 수 있습니다.

  • 로드. 현재 클러스터에로드가 많은 경우 다른 사용자의 응답 시간이 느려질 수 있습니다. 우리는 훨씬 더 나은 격리 메커니즘을 개발하기 위해 노력하고 있지만, 여전히 조금 벗어나 있습니다. 이것은보고있는 규모의 시간 차이를 설명하지는 않지만 요인 일 수 있습니다.

  • 조절. 한 고객이 한 번에 여러 개의 병렬 쿼리를 보내는 경우 해당 고객이 너무 많은 용량을 차지하지 않도록 쿼리가 느려질 수 있습니다. 이러한 현상이 얼마나 발생하는지는 쿼리 크기 및 클러스터의 다른로드를 비롯한 여러 가지 요인에 따라 달라집니다.

  • 결과를 작성하십시오. 결과가 100k보다 크면 결과를 기록하는 것이 매우 느리고 편차가있을 수 있습니다. 현재 조사중인 버그입니다.

이러한 모든 요소의 영향을 줄이기위한 중요한 노력이 진행 중입니다. 그러나 현재 우리는 "우리가 문제를 인식하고 그것을 개선하기 위해 노력하고있다"고 말하는 것 이외에 "쿼리 성능이 20 % 이내로 일관 될 것"이라고 물결 치고 말할 수있는 마술 지팡이가 없습니다.

일할 ID를 제공하면 검색어의 특정 사례를보고 시간이 어디에서 사용되고 있는지 파악하고 문제를 해결하기 위해 할 수있는 일이 있는지 확인할 수 있습니다.