2011-08-19 5 views
7

Azure 테이블 스토리지로 작업하면서 성능을 향상시키는 가장 좋은 방법을 찾으려고합니다. 내가 수행하는 쿼리는 매우 간단합니다. 파티션 키와 행 키를 사용하는 정확한 선택 또는 목록이있는 where 절 (예 : WHERE x == 1 또는 x == 2 또는 x == 3 등)입니다. 데이터를 다시 가져온 후에는 데이터 컨텍스트에서이를 추적하지 않습니다 (변경 추적 등 필요 없음). 마찬가지로 데이터 저장은 저장하기 위해 컨텍스트에 추가하는 것뿐입니다.Azure 테이블 스토리지 성능 - REST vs. StorageClient

현재 .NET 라이브러리 (저장소 클라이언트)를 사용하고 있습니다. 변경 추적 및 TableServiceContext의 다른 기능을 사용하지 않기 때문에 HTTP API를 직접 사용하려고합니다. 누구나 두 가지 옵션을 시도 했습니까? 그렇다면 어떤 성능 차이가 있습니까?

덕분에, 에릭

답변

10

표 스토리지는 변덕스러운 짐승의 비트 성능을 최적화 할 수 있습니다. 다양한 요소가 영향을 미칩니다. 여기 내 머리 꼭대기에서 몇 가지만 있습니다 :

  1. 모든 쿼리에서 파티션 키를 사용하는 것이 필수입니다. 당신이 이것을하지 않으면, 당신은 그것을 잘못하고 있습니다. 단일 PK와 단일 RK (그리고 그 둘만을 사용하는 경우)는 더 이상 쿼리가 아니지만 리소스가 GET되어 상대적으로 즉각적이어야합니다.
  2. OR 기반 쿼리를 사용하지 마십시오. 이로 인해 전체 테이블 스캔이 이루어지며 성능이 끔찍할 것입니다. 대신 OR 문 내에서 해당 쿼리를 병렬 처리하십시오.
  3. 파티셔닝 전략이 큰 영향을 미칩니다. 보유하고있는 파티션의 수와 얼마나 자주 파티션을 열어 (파티션을 워밍업하고 기본 파티션 서버가로드 밸런스를 야기하는지) 극적인 차이가 발생합니다. 파티션의 크기도 여기에 큰 영향을줍니다. 순차적 인 파티션 키는 종종 나쁜 생각입니다.
  4. 작은 요청은 (이전에 언급 한 바와 같이) 처신을 해제하면 도움이됩니다.
  5. 컨텍스트 추적을 끄고 100 continue (see here)도 도움이 될 수 있습니다.

귀하의 응용 프로그램에 따라 더 많은 것이 있다고 생각됩니다. 그러나 내가 언급 한 것들은 일반적으로 내가 시작하는 것들이다.

관련 문제