2016-04-17 37 views
7

Mentre si utilizza il C/C++ conducente di Cassandra, che a volte vedono questo tipo di messaggi spuntando nella mia console:lato server: query di aggregazione utilizzato senza partizione chiave

1460937092.140 [WARN] (src/response.cpp:51:char* 
     cass::Response::decode_warnings(char*, size_t)): 
     Server-side warning: Aggregation query used without partition key 

chiedo se qualcuno sa cosa questo significa. Cosa dovrei cercare nel mio codice che potrebbe generare questo errore, o è solo qualcosa sul lato server che non ho il controllo su?

risposta

10

Questo avviso indica che si sta eseguendo una selezione utilizzando un aggregato definito dall'utente senza una chiave di partizione. Può essere uno che è costruito come avg, count, min, max o potrebbe avere uno dei tuoi.

Un esempio:

select avg(temperature) from weather_data; 

Vs

select avg(temperature) from weather_data where id = 1; 

Il primo esempio potrebbe scansione tutte le righe di dati nel cluster e potrebbe essere un grave calo di prestazioni. Se ci sono abbastanza righe, la query potrebbe scadere.

Il secondo esegue la scansione di una singola partizione di dati che mantiene la query su un server ed è l'utilizzo consigliato.

+1

Ah. Questo è il 'count (*)' ... che ha funzionato bene con parsimonia e ha appena restituito il numero di righe. O forse no ... Ma vedo l'affermazione che causa l'avvertimento ora. –