MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Tâche d'optimisation du flux d'air qui transfère les données de BigQuery vers MongoDB

La réponse courte est que les opérations asynchrones brouillent votre profilage.

Les docs sur bq.query indiquez que le résultat google.cloud.bigquery.job.QueryJob l'objet est asynchrone tâche de requête. Cela signifie qu'une fois la requête soumise, l'interpréteur Python ne se bloque pas tant que vous n'essayez pas d'utiliser les résultats de la requête avec l'un des QueryJob synchrones. méthodes, to_dataframe() . Une part importante des 87 secondes que vous voyez est probablement consacrée à l'attente du retour de la requête.

Vous pouvez attendre que la requête soit terminée en appelant QueryJob.done itérativement jusqu'à ce qu'il renvoie true, puis appelez votre 2e instruction d'impression de profilage.

Ce n'est pas tout à fait une optimisation de votre code, mais j'espère que cela vous aidera à aller dans la bonne direction. Il est possible qu'un réglage de l'aller-retour des pandas puisse aider, mais je pense qu'il est probable que la plupart de votre temps soit passé à attendre la lecture/écriture de vos bases de données, et que l'écriture plus efficace ou un plus grand nombre de petites requêtes va être votre seule option pour réduire le temps total.