2017-04-06 3 views
1

간단한 키와 값으로 100M 행이 채워진 데이터베이스가 있습니다. 기본 키는 임의의 32 바이트 문자열이며 값은 32 바이트 문자열입니다. (비록 작지만 YCSB와 매우 비슷합니다.)Cloud Spanner의 읽기 처리량이 낮음

포인트 읽기를 수행하는 단일 노드의 처리량이 크게 일치하지 않습니다. 단일 노드에 대해 최대 15k QPS를보고 있지만 때로는 훨씬 낮은 처리량을보고 있습니다. 높은 QPS는 키의 더 작은 하위 집합을 쿼리 한 결과 인 것으로 보입니다. 이상한 캐싱 동작을 실행하고있을 가능성이 있습니까?

답변

1

캐싱 (즉, 보조 스토리지에서 데이터 캐싱)해서는 성능에 큰 영향을 미치지 않아야하며 대부분 Cloud Spanner의 성능 토론에서 무시할 수 있습니다. 하지만 Cloud Spanner에는 query cache이 있는데, 여기에 문제의 일부가 될 수 있습니다.

그렇게 심각하게 성능에 영향을 미칠 수있는 몇 가지 요인이 있습니다

1) 당신이, 당신은 쿼리 매개 변수를 사용하고 있는지 확인 읽기 요점에 대한 SQL 쿼리를 사용하는 경우. 즉, executeSql 요청에 paramsparamTypes 필드를 채우고 있는지 확인하십시오. 이렇게하면 쿼리 성능이 향상되고 보안이 향상됩니다. 쿼리 결과에 대한 자세한 내용은 whitepaper에서 확인할 수 있습니다.

2)로드 테스트를 실행하는 경우 최소 30 분 동안 작업 부하를 실행하여 Spanner가 노드간에 스플릿을 분산 (및 새로 만들기)하여 데이터 배포를 최적화 할 수 있는지 확인하십시오.

모든 최신 수준 (예 : Strong Reads)에서 뛰어난 읽기 성능을 볼 수 있어야하며 Bounded-Staleness를 사용하면 약간의 충돌이 발생할 수 있습니다.