Melhorando a performance do script...
Opa gente... estou em dúvida sobre como melhorar o script para ajudar na performance do servidor.
Como as aplicações asp q eu estou fazendo são gigantes (cerca de 5 mil linhas por página), achei que melhorando algumas coisas pode facilitar na performance do server...
Gostaria de saber qual das duas opções gasta menos recursos do server, vamos a elas:
Maneira 1: "Abre o banco de dados antes de começar a fazer as buscas e fazer o loop nos registros encontrados"
Set Con_Cadastros = Server.CreateObject("ADODB.Connection")
Con_Cadastros.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Caminho_Banco_de_Dados & "S1_Cadastros.mdb"
Set Con_Clientes = Server.CreateObject("ADODB.Connection")
Con_Clientes.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Caminho_Banco_de_Dados & "S1_Clientes.mdb"
Set BLABLABLA = Con_Cadastros.Execute("SELECT CNPJ FROM Cadastros ORDER BY Id")
If Not BLABLABLA.EOF Then
Do While Not BLABLABLA.EOF
Set TRALALA = Con_Clientes.Execute("SELECT Nome,N_Filial FROM Unidades WHERE CNPJ='"& BLABLABLA("CNPJ") &"' Clientes Order By Id")
If Not TRALALA.EOF Then
Do While Not TRALALA.EOF
Response.Write(TRALALA("Nome") &" - "& TRALALA("N_Filial") &"<BR>")
TRALALA.MoveNext
Loop
End If
TRALALA.Close
Set TRALALA = Nothing
BLABLABLA.MoveNext
Loop
End If
BLABLABLA.Close
Set BLABLABLA = Nothing
Con_Clientes.Close
Set Con_Clientes = Nothing
Con_Cadastros.Close
Set Con_Cadastros = Nothing
Maneira 2: "Abre o segundo Banco de dados só depois de começar o loop, abrindo ele e fechando após o término de cada busca encontrada"
Set Con_Cadastros = Server.CreateObject("ADODB.Connection")
Con_Cadastros.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Caminho_Banco_de_Dados & "S1_Cadastros.mdb"
Set BLABLABLA = Con_Cadastros.Execute("SELECT CNPJ FROM Cadastros ORDER BY Id")
If Not BLABLABLA.EOF Then
Do While Not BLABLABLA.EOF
Set Con_Clientes = Server.CreateObject("ADODB.Connection")
Con_Clientes.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Caminho_Banco_de_Dados & "S1_Clientes.mdb"
Set TRALALA = Con_Clientes.Execute("SELECT Nome,N_Filial FROM Unidades WHERE CNPJ='"& BLABLABLA("CNPJ") &"' Clientes Order By Id")
If Not TRALALA.EOF Then
Do While Not TRALALA.EOF
Response.Write(TRALALA("Nome") &" - "& TRALALA("N_Filial") &"<BR>")
TRALALA.MoveNext
Loop
End If
TRALALA.Close
Set TRALALA = Nothing
Con_Clientes.Close
Set Con_Clientes = Nothing
BLABLABLA.MoveNext
Loop
End If
BLABLABLA.Close
Set BLABLABLA = Nothing
Con_Cadastros.Close
Set Con_Cadastros = Nothing
Isso é só um exemplo simples que fiz rapidão, nem sei se funciona pq não testei, foi só pra demonstrar a idéia, e tentar descobrir qual forma exige menos do servidor em casos extremos (mais de 5 mil acessos simultaneos no mesmo minuto, com um banco de dados gigantesco, etc...
Agradeço a atenção de todos =)
Discussão (5)
Carregando comentários...