MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Ottimizzazione dell'attività del flusso d'aria che trasferisce i dati da BigQuery a MongoDB

La risposta breve è che le operazioni asincrone stanno confondendo la tua profilazione.

I documenti su bq.query afferma che il risultato google.cloud.bigquery.job.QueryJob l'oggetto è un asincrono lavoro di interrogazione. Ciò significa che, dopo l'invio della query, l'interprete python non si blocca finché non si tenta di utilizzare i risultati della query con uno dei QueryJob sincroni metodi, to_dataframe() . È probabile che una parte significativa degli 87 secondi visualizzati sia stata trascorsa in attesa della restituzione della query.

Puoi attendere il completamento della query chiamando QueryJob.done iterativamente finché non restituisce true, quindi chiama la tua seconda istruzione di stampa di profilatura.

Questa non è proprio un'ottimizzazione del tuo codice, ma si spera che aiuti a muoversi nella giusta direzione. È possibile che qualche ottimizzazione del roundtrip dei panda possa essere d'aiuto, ma penso che sia probabile che la maggior parte del tuo tempo venga speso in attesa di lettura/scrittura dai tuoi database e che scrivere in modo più efficiente o un numero maggiore di query più piccole sarà il tuo unica opzione per ridurre il tempo totale.