sql >> Database >  >> NoSQL >> MongoDB

Optimalisatie van Airflow Task die gegevens van BigQuery naar MongoDB overbrengt

Het korte antwoord is dat asynchrone bewerkingen je profilering vertroebelen.

De documenten op bq.query geef aan dat de resulterende google.cloud.bigquery.job.QueryJob object is een asynchroon taak opvragen. Dit betekent dat, nadat de query is ingediend, de python-interpreter niet blokkeert totdat u de resultaten van de query probeert te gebruiken met een van de synchrone QueryJob methoden, to_dataframe() . Een aanzienlijk deel van de 87 seconden die u ziet, wordt waarschijnlijk gewoon besteed aan het wachten op de terugkeer van de zoekopdracht.

U kunt wachten tot de query is voltooid door QueryJob.done . te bellen iteratief totdat het true retourneert, roep dan uw 2e profileringsafdrukopdracht aan.

Dit is niet echt een optimalisatie van uw code, maar hopelijk helpt het in de goede richting. Het is mogelijk dat wat afstemming van de rondreis van de panda's kan helpen, maar ik denk dat het waarschijnlijk is dat het grootste deel van je tijd wordt besteed aan het wachten op lezen/schrijven uit je databases, en dat het schrijven van efficiëntere of een groter aantal kleinere zoekopdrachten jouw enige optie om de totale tijd te verkorten.




  1. Hoe paginering uitvoeren met bereikquery's in MongoDB?

  2. MongoDB Aggregation, is er een manier om uitvoeringsstatistieken van een samengestelde cursor te krijgen?

  3. Wat is het verschil tussen area en BoundingBox uit de broncode van Redis?

  4. Redis Update gesorteerde set bij verlopen sleutel