Armazenamento em cache no armazenamento de dados de malha
Aplica-se a:✅ ponto de extremidade de análise SQL e Warehouse no Microsoft Fabric
A recuperação de dados do data lake é uma operação crucial de entrada/saída (IO) com implicações substanciais para o desempenho da consulta. O Fabric Data Warehouse emprega padrões de acesso refinados para aprimorar as leituras de dados do armazenamento e elevar a velocidade de execução de consultas. Além disso, minimiza de forma inteligente a necessidade de leituras de armazenamento remoto aproveitando os caches locais.
O cache é uma técnica que melhora o desempenho de aplicativos de processamento de dados, reduzindo as operações de E/S. O cache armazena dados e metadados acessados com frequência em uma camada de armazenamento mais rápida, como memória local ou disco SSD local, para que as solicitações subsequentes possam ser atendidas mais rapidamente, diretamente do cache. Se um determinado conjunto de dados tiver sido acessado anteriormente por uma consulta, todas as consultas subsequentes recuperarão esses dados diretamente do cache na memória. Essa abordagem diminui significativamente a latência de E/S, pois as operações de memória local são notavelmente mais rápidas em comparação com a busca de dados do armazenamento remoto.
O cache é totalmente transparente para o usuário. Independentemente da origem, seja uma tabela de depósito, um atalho OneLake ou até mesmo um atalho OneLake que faz referência a serviços que não são do Azure, a consulta armazena em cache todos os dados que acessa.
Há dois tipos de caches descritos posteriormente neste artigo:
- Cache na memória
- Cache do disco
À medida que a consulta acessa e recupera dados do armazenamento, ela executa um processo de transformação que transcodifica os dados de seu formato original baseado em arquivo em estruturas altamente otimizadas no cache na memória.
Os dados em cache são organizados em um formato colunar compactado otimizado para consultas analíticas. Cada coluna de dados é armazenada em conjunto, separada das outras, permitindo uma melhor compressão, uma vez que valores de dados semelhantes são armazenados em conjunto, levando a uma pegada de memória reduzida. Quando as consultas precisam executar operações em uma coluna específica, como agregações ou filtragem, o mecanismo pode trabalhar de forma mais eficiente, pois não precisa processar dados desnecessários de outras colunas.
Além disso, esse armazenamento colunar também é propício ao processamento paralelo, o que pode acelerar significativamente a execução de consultas para grandes conjuntos de dados. O motor pode realizar operações em várias colunas simultaneamente, tirando partido dos modernos processadores multi-core.
Essa abordagem é especialmente benéfica para cargas de trabalho analíticas em que as consultas envolvem a verificação de grandes quantidades de dados para executar agregações, filtragem e outras manipulações de dados.
Certos conjuntos de dados são muito grandes para serem acomodados em um cache na memória. Para manter o desempenho rápido da consulta para esses conjuntos de dados, o Warehouse utiliza espaço em disco como uma extensão complementar ao cache na memória. Todas as informações carregadas no cache na memória também são serializadas para o cache SSD.
Dado que o cache na memória tem uma capacidade menor em comparação com o cache SSD, os dados que são removidos do cache na memória permanecem dentro do cache SSD por um longo período. Quando a consulta subsequente solicita esses dados, eles são recuperados do cache SSD para o cache na memória a uma taxa significativamente mais rápida do que se fossem buscados no armazenamento remoto, proporcionando, em última análise, um desempenho de consulta mais consistente.
O cache permanece consistentemente ativo e opera perfeitamente em segundo plano, não exigindo nenhuma intervenção de sua parte. A desativação do cache não é necessária, pois isso inevitavelmente levaria a uma deterioração notável no desempenho da consulta.
O mecanismo de cache é orquestrado e mantido pelo próprio Microsoft Fabric e não oferece aos usuários a capacidade de limpar manualmente o cache.
A consistência transacional total do cache garante que quaisquer modificações nos dados no armazenamento, como por meio de operações DML (Data Manipulation Language), depois de terem sido inicialmente carregados no cache na memória, resultarão em dados consistentes.
Quando o cache atingir seu limite de capacidade e dados novos estiverem sendo lidos pela primeira vez, os objetos que permaneceram sem uso por mais tempo serão removidos do cache. Esse processo é implementado para criar espaço para o influxo de novos dados e manter uma estratégia ideal de utilização do cache.