Query Cache

Consulta aos locais de cache os resultados de uma consulta de banco de dados na memória do ColdFusion Server é onde ele pode ser recuperado imediatamente sem consultar o banco de dados. Cache de consulta é uma das ferramentas mais úteis para melhorar o desempenho em suas aplicações ColdFusion, mas, infelizmente, é também um dos menos utilizados. Algumas advertências estão envolvidos em cache de consulta, mas apesar de tudo, é uma técnica muito simples de empregar. Você deve considerar apenas o cache de consultas que se enquadram nos seguintes critérios:

  

A consulta tem uma latência significativa permitido. Em outras palavras, os dados no conjunto de resultados não mudam frequentemente e, portanto, estável ao longo de um período significativo de tempo.

A consulta é de âmbito universal, de modo que todos os usuários de sua aplicação pode utilizar exactamente o mesmo resultado da consulta.

A consulta requer recursos significativos ao processo. Outra maneira de olhar para ele é como segue:

A latência lhe dá permissão para usar o cache.

A universalidade de alcance faz cache possível.

Os requisitos de processamento necessário fazer o cache. Cache Sempre que uma consulta, você coloca uma cópia do mesmo na memória e instruir ColdFusion MX para recuperar a memória versão baseada dessa consulta para um determinado período de tempo. Por exemplo, o código hows um CFQUERY que armazena o seu resultado definido para 12 horas, após o que outra chamada para CFQUERY recupera os dados diretamente do banco de dados e esconderijos que resultem novas regras na memória.

 SELECT LastName + ',' + FirstName AS nome de usuário AppUser ORDER BY username ASC  # # Username 

O código mostra um CFQUERY que armazena seu resultado definido após 1 a 4 de Julho, 2002; antes deste tempo, uma chamada para CFQUERY recupera seus dados diretamente do banco de dados.

 SELECT LastName + ',' + FirstName AS nome de usuário AppUser ORDER BY username ASC  # # Username 

CachedWithin é o mais usado dos dois atributos disponíveis cache. CachedAfter tem muito poucas aplicações práticas, é usado principalmente para esperar até um determinado momento, quando novos dados estiverem disponíveis no seu banco de dados de algum processo externo e, em seguida para o cache de dados. Bons candidatos para cache de consultas são os seguintes:

As páginas do catálogo on-line loja que exibir as miniaturas e descrições das categorias de itens vendidos.

As páginas do catálogo on-line loja que exibir itens de cada categoria específica.

A lista de itens à venda em uma loja online.

Selecione menus dinamicamente preenchidos com os dados alterados com pouca freqüência, como os nomes dos gerentes de departamento.

 (CALL sp_GetCompanies ( 'GA'))  CompanyName # # # # ZipCode 

 INSERT INTO OrderItem (SalesOrderID, itemnumber, Descrição, PreçoUnitário, Quantidade) VALUES (1, 'CAS30-BLK', '30 Minutos Cassete, Black Case ', 1,05, 10)  UPDATE InventoryItem SET AvailableToSell = AvailableToSell - 10 WHERE itemnumber = 'CAS30-BLK' 

Tudo entre as tags de abertura e fechamento CFTRANSACTION é considerada uma única transação. Para esta operação seja bem sucedida, tanto a inserir na tabela OrderItem ea atualização da tabela InventoryItem deve suceder. Essa é a idéia de uma transação: tudo ou nada. Se ambas as consultas são bem sucedidos, a transação ser confirmada, e os efeitos de ambas as consultas são gravadas para o banco de dados. Se qualquer consulta falhar, a transação inteira é revertida como se nada tivesse acontecido. No exemplo, na parte anterior, ColdFusion fornece os comandos para controlar o início eo fim da transação, mas em muitos casos, tal controle é feito no servidor de banco de dados próprio usando comandos de banco de dados nativo. Então, onde você deve controlar uma transação? A resposta simples para essa pergunta é sempre "No servidor de banco de dados, se você puder." A razão para esta resposta é a capacidade do banco de dados para controlar suas operações através de comandos nativo e capacidades em vez de confiar sobre a capacidade do driver de banco de dados para comunicar controle transacional para o banco de dados. Alguns drivers de banco de dados não têm a capacidade para transmitir comandos de controle transacional para o banco de dados, por isso, nestes casos, é necessário encapsular todos os controles transacionais dentro de um procedimento armazenado no banco de dados e simplesmente chamá-lo de ColdFusion. Alguns outros motoristas podem se comunicar apenas um subconjunto do banco de dados está disponível comandos de controle de transação e estão, portanto, não como uma solução capaz. Vejam agora em uma operação que é controlada dentro do próprio procedimento armazenado. Este código é o equivalente do outro, exceto que a operação é controlada dentro do procedimento armazenado em vez de ColdFusion.

BEGIN TRANSACTION INSERT INTO OrderItem (SalesOrderID, itemnumber, Descrição, PreçoUnitário, Quantidade) VALUES (1, 'CAS30-BLK', '30 Minutos Cassete, Black Case ', 1,05, 10) IF @ @ ERROR! = 0 BEGIN
RAISERROR 50001 "O OrderItem não poderia ser inserido." ROLLBACK TRANSACTION RETURN END UPDATE InventoryItem SET AvailableToSell = AvailableToSell - 10 WHERE itemnumber = 'CAS30-BLK' IF @ @ ERROR! = 0 BEGIN RAISERROR 50002 "O InventoryItem não pôde ser atualizado. ROLLBACK TRANSACTION RETURN END COMMIT TRANSACTION

A sintaxe é um pouco diferente, mas os princípios são muito semelhantes, não são? É realmente apenas uma questão de aprendizado para ambos os métodos de execução transações e, em seguida, controlá-los o mais próximo para o servidor de banco de dados como o seu aplicativo permite-lhe fazer isso.

um artigo submetido por Richard Brighton


Isenção de responsabilidade:O nosso site não se responsabiliza pelo conteúdo deste artigo. Webarticles é uma fonte de informação livre.
Importante: Este artigo "Query Cache" foi traduzida por um software automático. Nós sentimos muito por quaisquer erros de ortografia que pode ter ocorrido. Obrigado pela sua compreensão.


Online: 208 users browsing the articles directory