Cache de consulta
O cache é uma técnica essencial para melhorar o desempenho dos sistemas de data warehouse, evitando a necessidade de recompute ou buscar os mesmos dados várias vezes. No Databricks SQL, o cache pode acelerar significativamente a execução da consulta e minimizar o uso do warehouse, resultando em custos mais baixos e utilização de recursos mais eficiente. Cada camada de cache melhora o desempenho da consulta, minimiza o uso do cluster e otimiza a utilização de recursos para uma experiência de data warehouse perfeita.
O cache oferece inúmeras vantagens em data warehouses, incluindo:
- Velocidade: Ao armazenar resultados de consulta ou dados acessados com frequência na memória ou em outros meios de armazenamento rápido, o cache pode reduzir drasticamente os tempos de execução da consulta. Esse armazenamento é particularmente benéfico para consultas repetitivas, pois o sistema pode recuperar rapidamente os resultados armazenados em cache em vez de recomputá-los.
- Uso reduzido do cluster: O cache minimiza a necessidade de recursos de computação adicionais reutilizando resultados computados anteriormente. Isso reduz o tempo de atividade geral do warehouse e a demanda por clusters de computação adicionais, levando à economia de custos e à melhor alocação de recursos.
Tipos de caches de consulta no Databricks SQL
O Databricks SQL executa vários tipos de cache de consulta.
Cache da interface do usuário do Databricks SQL: O cache por usuário de todos os resultados da consulta e do painel na interface do usuário do Databricks SQL. Quando os usuários abrem pela primeira vez uma consulta dashboard ou SQL, o cache da interface do usuário do SQL do Databricks exibe o resultado da consulta mais recente, incluindo os resultados de execuções agendadas.
O cache de interface do usuário do Databricks SQL tem no máximo um ciclo de vida de 7 dias. O cache está localizado no sistema de arquivos do Azure Databricks em sua conta. Você pode excluir os resultados da consulta executando a consulta que não deseja mais ser armazenada. Depois de executar novamente, os resultados antigos da consulta são removidos do cache. Além disso, o cache é invalidado depois que as tabelas subjacentes são atualizadas.
Cache de resultado: Cache de resultados por cluster dos resultados de consultas, de todas as consultas, por meio de warehouses de SQL. O cache de resultados inclui caches de resultados locais e remotos, que funcionam juntos para melhorar o desempenho da consulta armazenando os resultados da consulta na memória ou nos meios de armazenamento remoto.
- Cache local: O cache local é um cache na memória que armazena os resultados da consulta para o tempo de vida do cluster ou até que o cache esteja cheio, o que ocorrer primeiro. Esse cache é útil para acelerar consultas repetitivas, eliminando a necessidade de recompilar os mesmos resultados. No entanto, depois que o cluster é interrompido ou reiniciado, o cache é limpo e todos os resultados da consulta são removidos.
- Cache de resultados remoto: o cache de resultados remoto é um sistema somente cache sem servidor que retém os resultados da consulta, persistindo-os como dados do sistema do workspace. Como resultado, esse cache não é invalidado pela interrupção ou reinicialização de um SQL Warehouse. O cache de resultados remoto aborda um problema comum encontrado na memória dos resultados da consulta em cache, que permanece disponível apenas enquanto os recursos de computação estiverem em execução. O cache remoto é um cache compartilhado persistente em todos os warehouses em um workspace do Databricks.
É necessário um warehouse em execução para acessar o cache remoto. Ao processar uma consulta, primeiro, um cluster procura em seu cache local e, em seguida, procura no cache remoto, se necessário. A consulta só será executada se o resultado da consulta não estiver armazenado em cache em nenhum deles. Tanto o cache local quanto o remoto têm um ciclo de vida de 24 horas, que começa na entrada do cache. O cache de resultados remotos persiste durante a interrupção ou reinicialização de um SQL Warehouse. Ambos os caches são invalidados quando as tabelas subjacentes são atualizadas.
O cache de resultados remoto está disponível para consultas que usam os clientes ODBC/JDBC e a API de Instrução SQL.
Para desabilitar o cache de resultados da consulta, você pode executar
SET use_cached_result = false
no editor SQL.Importante
Você deve usar essa opção somente no teste ou no parâmetro de comparação.
Cache de disco: Cache SSD local para leitura de dados do armazenamento de dados para consultas por meio de SQL warehouses. O cache de disco foi projetado para melhorar o desempenho da consulta armazenando dados em disco, permitindo leituras aceleradas de dados. Os dados são armazenados em cache automaticamente quando os arquivos são buscados, utilizando um formato intermediário rápido. Ao armazenar cópias dos arquivos no armazenamento local anexado aos nós de computação, o cache de disco garante que os dados estejam localizados mais próximos dos trabalhos, resultando em um melhor desempenho de consulta. Veja Otimizar o desempenho com o uso do cache no Azure Databricks.
Além de sua função primária, o cache de disco detecta automaticamente alterações nos arquivos de dados subjacentes. Quando o cache detecta alterações, ele é invalidado. O cache de disco compartilha as mesmas características do ciclo de vida do cache de resultados local. Isso significa que, quando o cluster é interrompido ou reiniciado, o cache é limpo e precisa ser repovoado.
O armazenamento em cache dos resultados da consulta e o cache de disco afetam as consultas na interface do usuário do Databricks SQL e BI e outros clientes externos.