Кэширование запросов

Кэширование является важным способом повышения производительности систем хранилища данных, избегая необходимости повторно компьютерировать или получить одни и те же данные несколько раз. В Databricks SQL кэширование может значительно ускорить выполнение запросов и свести к минимуму использование хранилища, что приводит к снижению затрат и более эффективному использованию ресурсов. Каждый уровень кэширования повышает производительность запросов, сводит к минимуму использование кластера и оптимизирует использование ресурсов для простого взаимодействия с хранилищем данных.

Кэширование обеспечивает множество преимуществ в хранилищах данных, в том числе:

  • Скорость. Сохраняя результаты запроса или часто доступ к данным в памяти или других средах быстрого хранения, кэширование может значительно сократить время выполнения запроса. Это хранилище особенно полезно для повторяющихся запросов, так как система может быстро получить кэшированные результаты вместо повторной их компиляции.
  • Сокращение использования кластера. Кэширование сводит к минимуму потребность в дополнительных вычислительных ресурсах путем повторного использования ранее вычисляемых результатов. Это сокращает общее время простоя хранилища и потребность в дополнительных вычислительных кластерах, что приводит к экономии затрат и улучшению распределения ресурсов.

Типы кэшей запросов в Databricks SQL

Databricks SQL выполняет несколько типов кэширования запросов.

query caches

  • Кэш пользовательского интерфейса Databricks SQL: кэширование всех запросов и панелей мониторинга для каждого пользователя приводит к пользовательскому интерфейсу SQL Databricks. Когда пользователи сначала открывают панель мониторинга или SQL-запрос, кэш пользовательского интерфейса Databricks SQL отображает самый последний результат запроса, включая результаты из запланированных выполнений.

    Кэш пользовательского интерфейса SQL Databricks имеет не более 7-дневного жизненного цикла. Кэш находится в файловой системе Azure Databricks в вашей учетной записи. Вы можете удалить результаты запроса, повторно выполнив запрос, который больше не нужно хранить. После повторного запуска старые результаты запроса удаляются из кэша. Кроме того, кэш недействителен после обновления базовых таблиц.

  • Кэш результатов: кэширование результатов запроса для каждого кластера для всех запросов через хранилища SQL. Кэширование результатов включает как локальные, так и удаленные кэши результатов, которые совместно работают для повышения производительности запросов, сохраняя результаты запроса в памяти или носителях удаленного хранилища.

    • Локальный кэш: локальный кэш — это кэш в памяти, в котором хранятся результаты запросов для времени существования кластера или до тех пор, пока кэш не будет заполнен, независимо от того, что будет первым. Этот кэш полезен для ускорения повторяющихся запросов, устраняя необходимость повторной компиляции одних и тех же результатов. Однако после остановки или перезапуска кластера кэш очищается и все результаты запроса удаляются.
    • Удаленный кэш результатов: удаленный кэш результатов — это бессерверная система кэша, которая сохраняет результаты запроса, сохраняя их в облачном хранилище. В результате этот кэш не является недействительным путем остановки или перезапуска хранилища SQL. Удаленный кэш результатов устраняет общую точку боли в кэшировании запроса, которая остается доступной только до тех пор, пока вычислительные ресурсы запущены. Удаленный кэш — это постоянный общий кэш во всех хранилищах в рабочей области Databricks.

    Для доступа к удаленному кэшу результатов требуется запущенное хранилище. При обработке запроса кластер сначала будет выглядеть в локальном кэше, а затем при необходимости будет выглядеть в удаленном кэше результатов. Только если результат запроса не кэшируется в любом кэше, выполняется запрос. Локальные и удаленные кэши имеют жизненный цикл 24 часа, который начинается с записи кэша. Удаленный кэш результатов сохраняется через остановку или перезапуск хранилища SQL. Оба кэша недопустимы при обновлении базовых таблиц.

    Удаленный кэш результатов доступен для запросов с помощью клиентов ODBC/ JDBC и API инструкций SQL.

    Чтобы отключить кэширование результатов запроса, можно выполнить команду SET use_cached_result = false в редакторе SQL.

    Внимание

    Этот параметр следует использовать только для тестирования или анализа производительности.

  • Кэш дисков: кэширование локальных SSD для чтения данных из хранилища данных для запросов через хранилища SQL. Кэш дисков предназначен для повышения производительности запросов путем хранения данных на диске, что позволяет ускорить чтение данных. Данные автоматически кэшируются при получении файлов, используя быстрый промежуточный формат. Сохраняя копии файлов в локальном хранилище, подключенном к вычислительным узлам, кэш дисков гарантирует, что данные находятся ближе к рабочим ролей, что приводит к повышению производительности запросов. Дополнительные сведения см. в статье Оптимизация производительности с помощью кэширования в Azure Databricks.

Помимо основной функции кэш диска автоматически обнаруживает изменения в базовых файлах данных. При обнаружении изменений кэш недействителен. Кэш дисков использует те же характеристики жизненного цикла, что и локальный кэш результатов. Это означает, что при остановке или перезапуске кластера кэш очищается и его необходимо повторно преобразовывать.

Кэширование результатов запроса и кэш диска влияют на запросы в пользовательском интерфейсе Databricks SQL, а также в бизнес-аналитике и других внешних клиентах.