Buforowanie zapytań

Buforowanie jest podstawową techniką poprawy wydajności systemów magazynu danych, unikając konieczności ponownego skompilowania lub wielokrotnego pobierania tych samych danych. W usłudze Databricks SQL buforowanie może znacznie przyspieszyć wykonywanie zapytań i zminimalizować użycie magazynu, co skutkuje niższymi kosztami i bardziej wydajnym wykorzystaniem zasobów. Każda warstwa buforowania poprawia wydajność zapytań, minimalizuje użycie klastra i optymalizuje wykorzystanie zasobów w celu zapewnienia bezproblemowego środowiska magazynu danych.

Buforowanie zapewnia wiele korzyści w magazynach danych, w tym:

  • Szybkość: Dzięki przechowywaniu wyników zapytań lub często używanych danych w pamięci lub innych szybkich nośnikach magazynu buforowanie może znacznie skrócić czas wykonywania zapytań. Ten magazyn jest szczególnie przydatny w przypadku powtarzających się zapytań, ponieważ system może szybko pobrać buforowane wyniki zamiast ich ponownego skompilowania.
  • Mniejsze użycie klastra: Buforowanie minimalizuje potrzebę dodatkowych zasobów obliczeniowych przez ponowne wykorzystanie wcześniej obliczonych wyników. Zmniejsza to ogólny czas pracy magazynu i zapotrzebowanie na dodatkowe klastry obliczeniowe, co prowadzi do obniżenia kosztów i lepszej alokacji zasobów.

Typy pamięci podręcznych zapytań w usłudze Databricks SQL

Usługa Databricks SQL wykonuje kilka typów buforowania zapytań.

query caches

  • Pamięć podręczna interfejsu użytkownika sql usługi Databricks: buforowanie wszystkich zapytań i pulpitów nawigacyjnych przez użytkownika usługi Databricks SQL. Gdy użytkownicy po raz pierwszy otwierają pulpit nawigacyjny lub zapytanie SQL, pamięć podręczna interfejsu użytkownika SQL usługi Databricks wyświetla najnowszy wynik zapytania, w tym wyniki z zaplanowanych wykonań.

    Pamięć podręczna interfejsu użytkownika sql usługi Databricks ma co najwyżej 7-dniowy cykl życia. Pamięć podręczna znajduje się w systemie plików usługi Azure Databricks na twoim koncie. Możesz usunąć wyniki zapytania, uruchamiając ponownie zapytanie, które nie chcesz już przechowywać. Po ponownym uruchomieniu stare wyniki zapytania zostaną usunięte z pamięci podręcznej. Ponadto pamięć podręczna jest unieważniona po zaktualizowaniu bazowych tabel.

  • Pamięć podręczna wyników: buforowanie wyników zapytań dla wszystkich zapytań za pośrednictwem usługi SQL Warehouse. Buforowanie wyników obejmuje zarówno lokalne, jak i zdalne pamięci podręczne wyników, które współpracują ze sobą w celu zwiększenia wydajności zapytań dzięki przechowywaniu wyników zapytania w pamięci lub zdalnych nośnikach magazynu.

    • Lokalna pamięć podręczna: lokalna pamięć podręczna jest pamięcią podręczną w pamięci, która przechowuje wyniki zapytań dla okresu istnienia klastra lub do momentu zapełnienia pamięci podręcznej, w zależności od tego, co nastąpi wcześniej. Ta pamięć podręczna jest przydatna do przyspieszania powtarzających się zapytań, eliminując konieczność ponownego skompilowania tych samych wyników. Jednak po zatrzymaniu lub ponownym uruchomieniu klastra pamięć podręczna zostanie oczyszczona i wszystkie wyniki zapytania zostaną usunięte.
    • Zdalna pamięć podręczna wyników: zdalna pamięć podręczna wyników to bezserwerowy system pamięci podręcznej, który zachowuje wyniki zapytań, utrwalając je w magazynie w chmurze. W związku z tym ta pamięć podręczna nie jest unieważniona przez zatrzymanie lub ponowne uruchomienie usługi SQL Warehouse. Zdalna pamięć podręczna wyników rozwiązuje typowy punkt bólu w zapytaniu buforowania, co powoduje, że w pamięci pozostaje dostępna tylko tak długo, jak zasoby obliczeniowe są uruchomione. Zdalna pamięć podręczna jest trwałą udostępnioną pamięcią podręczną we wszystkich magazynach w obszarze roboczym usługi Databricks.

    Uzyskiwanie dostępu do zdalnej pamięci podręcznej wyników wymaga działającego magazynu. Podczas przetwarzania zapytania klaster najpierw wyszukuje w lokalnej pamięci podręcznej, a następnie w razie potrzeby wyszukuje w zdalnej pamięci podręcznej wyników. Tylko wtedy, gdy wynik zapytania nie jest buforowany w żadnej pamięci podręcznej, jest wykonywane zapytanie. Zarówno lokalne, jak i zdalne pamięci podręczne mają cykl życia 24 godziny, który rozpoczyna się od wejścia w pamięci podręcznej. Zdalna pamięć podręczna wyników jest utrwalana przez zatrzymanie lub ponowne uruchomienie usługi SQL Warehouse. Obie pamięci podręczne są unieważniane po zaktualizowaniu bazowych tabel.

    Zdalna pamięć podręczna wyników jest dostępna dla zapytań przy użyciu klientów ODBC/JDBC i interfejsu API instrukcji SQL.

    Aby wyłączyć buforowanie wyników zapytania, możesz uruchomić SET use_cached_result = false polecenie w edytorze SQL.

    Ważne

    Tej opcji należy używać tylko w testach lub testach porównawczych.

  • Pamięć podręczna dysku: lokalne buforowanie dysków SSD dla danych odczytywanych z magazynu danych w przypadku zapytań za pośrednictwem usługi SQL Warehouse. Pamięć podręczna dysku została zaprojektowana w celu zwiększenia wydajności zapytań dzięki przechowywaniu danych na dysku, co pozwala na przyspieszone odczyty danych. Dane są automatycznie buforowane, gdy pliki są pobierane, przy użyciu szybkiego formatu pośredniego. Dzięki przechowywaniu kopii plików w magazynie lokalnym dołączonym do węzłów obliczeniowych pamięć podręczna dysków gwarantuje, że dane znajdują się bliżej procesów roboczych, co zwiększa wydajność zapytań. Zobacz Optymalizowanie wydajności za pomocą buforowania w usłudze Azure Databricks.

Oprócz funkcji podstawowej pamięć podręczna dysku automatycznie wykrywa zmiany w źródłowych plikach danych. Po wykryciu zmian pamięć podręczna zostanie unieważniona. Pamięć podręczna dysku współudzieli te same charakterystyki cyklu życia co lokalna pamięć podręczna wyników. Oznacza to, że po zatrzymaniu lub ponownym uruchomieniu klastra pamięć podręczna zostanie oczyszczona i musi zostać ponownie wypełniona.

Wyniki zapytania buforowania i pamięci podręcznej dysku mają wpływ na zapytania w interfejsie użytkownika SQL usługi Databricks i usłudze BI oraz innych klientach zewnętrznych.