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

Optimering af luftstrømsopgave, der overfører data fra BigQuery til MongoDB

Det korte svar er, at asynkrone operationer forvirrer din profilering.

Dokumenterne på bq.query angive, at den resulterende google.cloud.bigquery.job.QueryJob objekt er et asynkront forespørgselsjob. Det betyder, at efter at forespørgslen er sendt, blokerer python-fortolkeren ikke, før du forsøger at bruge resultaterne af forespørgslen med en af ​​de synkrone QueryJob metoder, to_dataframe() . En betydelig del af de 87 sekunder, du ser, bliver sandsynligvis bare brugt på at vente på, at forespørgslen vender tilbage.

Du kan vente på, at forespørgslen er færdig ved at ringe til QueryJob.done iterativt, indtil det returnerer sandt, ring derefter din 2. profiludskriftserklæring.

Dette er ikke helt en optimering af din kode, men hjælper forhåbentlig i den rigtige retning. Det er muligt, at nogle justeringer af pandaerne rundtur kan hjælpe, men jeg tror, ​​det er sandsynligt, at det meste af din tid bliver brugt på at vente på læsning/skrivning fra dine databaser, og at skrivning af mere effektiv eller et større antal mindre forespørgsler vil være din eneste mulighed for at reducere den samlede tid.




  1. DbRef med Mongoose - mongoose-dbref eller befolke?

  2. MongoDB afbryder, når du kører mongod-kommando på terminal

  3. Mongoose:hvordan indstiller man et skemafelt til at være ID?

  4. Mongodb sparer en dag mindre - Tidszoneudgave