MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Optymalizacja zadania przepływu powietrza, które przesyła dane z BigQuery do MongoDB

Krótka odpowiedź brzmi, że operacje asynchroniczne zakłócają profilowanie.

Dokumentacja na bq.query stwierdzić, że wynikowy google.cloud.bigquery.job.QueryJob obiekt jest asynchroniczny zadanie zapytania. Oznacza to, że po przesłaniu zapytania interpreter Pythona nie blokuje się, dopóki nie spróbujesz użyć wyników zapytania z jednym z synchronicznych QueryJob metody, to_dataframe() . Znaczna część z 87 sekund, które widzisz, jest prawdopodobnie spędzona na oczekiwaniu na powrót zapytania.

Możesz poczekać na zakończenie zapytania, wywołując QueryJob.done iteracyjnie, aż zwróci wartość true, a następnie wywołaj drugą instrukcję profilowania print.

Nie jest to do końca optymalizacja twojego kodu, ale miejmy nadzieję, że pomoże to we właściwym kierunku. Możliwe, że trochę dostrojenia podróży w obie strony może pomóc, ale myślę, że większość czasu spędzasz czekając na odczyt/zapis z baz danych i że pisanie wydajniejszego lub większej liczby mniejszych zapytań będzie twoim jedyna opcja do skrócenia całkowitego czasu.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Do jakiego poziomu MongoDB blokuje zapisy? (lub:co to znaczy za połączenie

  2. Jak dodać definicję makra w cmake?

  3. Konwertowanie struktury JSON na BasicDBObject

  4. Konwertuj MongoDB BsonDocument na prawidłowy JSON w C#

  5. Jak zapewnić unikalny element w tablicy opartej na określonych polach - mongoDB?