2011-08-19 15 views
7

Sto lavorando con Azure Table Storage e sto cercando di capire il modo migliore per aumentare le prestazioni. Le query che eseguo sono molto semplici: una selezione esatta utilizzando la chiave di partizione e la chiave di riga o una clausola where con un elenco (ad es. WHERE x == 1 o x == 2 o x == 3, ecc.). Una volta recuperati i dati, non li rintraccio in un contesto di dati (non è necessario il rilevamento delle modifiche, ecc.). Anche il salvataggio dei dati è simile, quindi lo aggiungo solo al contesto per abilitare il salvataggio.Prestazioni di archiviazione della tabella di Azure - REST vs. StorageClient

Al momento, sto usando la libreria .NET (client di archiviazione). Poiché non utilizzo il rilevamento delle modifiche e altre funzionalità di TableServiceContext, sto pensando di utilizzare direttamente l'API HTTP. Qualcuno ha provato entrambe le opzioni? Se sì, quale tipo di differenza di prestazioni hai visto?

Grazie, Erick

risposta

10

stoccaggio tabella può essere un po 'una bestia volubile per ottimizzare le prestazioni. Ci sono una varietà di fattori che avranno un impatto su di esso. Eccone alcuni in cima alla mia testa:

  1. L'utilizzo di una chiave di partizione in ogni query è obbligatorio. Se non lo fai, stai sbagliando. Se si utilizzano singoli PK e RK singoli (e solo questi due), non è più una query, ma una risorsa GET e dovrebbe essere relativamente istantanea.
  2. Non utilizzare query basate su OR. Ciò causerà una scansione completa della tabella e le prestazioni saranno orribili. Piuttosto, parallelizza quelle query all'interno dell'istruzione OR.
  3. La strategia di suddivisione avrà un impatto importante. Quante partizioni hai e quanto spesso le colpisci (per scaldarle e causare il bilanciamento dei server di partizione sottostante causerà drammatiche differenze. Anche la dimensione della partizione ha un grande impatto. Le chiavi di partizione sequenziali sono spesso una cattiva idea.
  4. Piccole richieste possono trarre vantaggio dallo spegnimento di nagling (come accennato in precedenza).
  5. Disattivare il rilevamento del contesto e 100 continuare (see here) può essere d'aiuto.

Ci sono molti altri suppongo che dipendono dalla vostra applicazione. Tuttavia, quelli che menziono sono generalmente quelli con cui inizio.

Problemi correlati