Otimizando o desempenho de suas consultas

por Fernando D'Angelo 27. abril 2000 00:00

Existe uma propriedade do Recordset que muitas vezes é esquecida, mas que pode aumentar a velocidade de uma consulta ao banco de dados: a propriedade em questão é cachesize.

Não se esqueça que as páginas .ASP não estão necessariamente no mesmo computador que a base de dados. Logo, este artigo trata o computador que hospeda a base de dados como provedor de dados e o computador que hospeda as páginas que compõem um site como computador local, pois é nele que ocorre todo o processamento ASP, que é então enviado aos browsers dos clientes.

A propriedade cachesize define o número de registros que o provedor de dados retornará de uma única vez à memória do computador local. Assim, se o cachesize estiver definido com o valor 20, quando o recordset for aberto, serão retornados 20 registros para a memória local. A leitura destes 20 registros será feita no próprio computador local, sem necessidade de acesso à base de dados em cada movimentação ao próximo registro. Conforme você se movimenta pelo recordset e passa o último registro do cache, o provedor de dados retorna os 20 registros seguintes. Desta forma, é possível economizar acesso à base de dados e, consequentemente, tempo.

O valor padrão desta propriedade é 1 e, desta forma, a cada movimentação pelo recordset, é feito um novo acesso à base de dados, causando uma lentidão que pode ser minimizada com o uso adequado da propriedade cachesize. Numa situação em que serão lidos 200 registros, serão feitos 10 acessos ao provedor de dados caso o tamanho do cache seja 20. Se o tamanho do cache não for alterado ( será mantido o valor default 1 ), serão necessários 200 acessos ao provedor ( 1 acesso para cada registro !)

Esta propriedade pode ser alterada durante todo o ciclo de vida do recordset, e as alterações serão válidas para as próxima chamadas ao banco ( o cache corrente não será alterado, mas o próximo cache terá o tamanho do novo valor setado para o cachesize ).

Um possível inconveniente é que os registros em cache não serão atualizados caso alguma alteração seja feita por outros usuários. Para forçar a atualização do cache, pode-se usar o método Resync do objeto Recordset.

Para testar o exemplo abaixo, copie o código e cole em uma página .ASP, apenas adequando os parâmetros do método Open do objeto Connection a uma base de dados sua ( ODBC com o nome do usuário e a senha ) , e no código sql digite o nome de uma tabela existente em sua base de dados. Execute o exemplo, e será mostrado o tempo gasto para percorrer toda a tabela com um cache de tamanho 1 e com um cache de tamanho 100.



<%
Set Banco = Server.CreateObject("ADODB.Connection")
Banco.Open "banco","uid","pwd"
Set RecordSet = Server.CreateObject("ADODB.Recordset")
Recordset.Cachesize = 1
Sql = "Select * from tabela"
RecordSet.Open SQL,Banco
Tempo = Timer
Response.Write ("Lendo tabela com cachesize = 1...")
Do While not Recordset.Eof
Recordset.MoveNext
Loop
Tempo = Timer - Tempo
Response.Write ("Tempo Gasto:" & Tempo & "
")
RecordSet.CacheSize = 100
RecordSet.MoveFirst
Tempo = Timer
Response.Write ("Lendo tabela com cachesize = 100...")
Do While not Recordset.Eof
Recordset.MoveNext
Loop
Tempo = Timer - Tempo
Response.Write ("Tempo Gasto:" & Tempo )
RecordSet.Close
Set RecordSet = Nothing
Set Banco = Nothing
%>

Tags:

Posts Antigos




Comentários

Comentar




  Country flag

biuquote
  • Comentário
  • Pré-visualização
Loading




Calendário

<<  fevereiro 2012  >>
seteququsedo
303112345
6789101112
13141516171819
20212223242526
2728291234
567891011

Ver os posts em um calendário maior

Oportunidades


Para divulgar oportunidades aqui, entre em contato conosco enviando a descrição completa da vaga + uma data de validade para cada uma delas.

* As vagas divulgadas neste espaço são de inteira responsabilidade das empresas anunciantes.

Assine Nossa Newsletter

Quero ser notificado quando um novo Post for publicado