O cache de query é uma técnica de otimização formidável, que agiliza sobremaneira o acesso ao banco de dados, eliminando um dos principais gargalos de um sistema web. Define-se que a query será "cacheada" através do argumento cachedWithin, especificando-se também o tempo que o resultado permanecerá em memória. Isso é feito com a função CreateTimeSpan, que tem como argumentos o número de dias, horas, minutos e segundos. Veja o exemplo abaixo:
<cfquery datasource="bdProd" name="retornaCidades"
cachedwithin="#CreateTimeSpan(0,1,0,0)#">
select cod_cidade, dsc_cidade
from esc.cidade
where cod_uf = <cfqueryparam value="#arguments.uf#"
cfsqltype="CF_SQL_VARCHAR" maxlength="2">
order by decode(dsc_cidade,'Rio De Janeiro','A',dsc_cidade)
</cfquery>
Na
primeira vez que a query é executada, o servidor de aplicação vai ao
banco de dados e aguarda a resposta, que vai levar alguma coisa perto de
30 milissegundos.
Mas,
a partir da segunda vez que essa mesma query for requisitada ao
servidor de aplicação, ele não vai mais incomodar o banco de dados, pois
a query já se encontra "cacheada". O tempo necessário para retornar os
dados será de ZERO milissegundos. Na verdade, por estar em memória real,
o processo é tão rápido que não pode ser medido em milissegundos.
Analise
as queries de seus sistemas e vejam quais são elegíveis para o uso
desta técnica. A elegibilidade deve ser estudada caso a caso porque
queries de pesquisa em tabelas que estão sendo constantemente
atualizadas não poderão ser "cacheadas", sob pena de o retorno da
pesquisa não representar a realidade - pode ficar algum dado de fora.
Cache de queries é um verdadeiro divisor de águas em sistemas web. Recomendo veementemente sua utilização.
Nenhum comentário:
Postar um comentário