Re: [firebase-br] PERFORMANCE, help galera (toda sugestão é bem vinda), A/C: Marlon David, Kléber Caneva, Eduardo Jedliczka (TeamFB)

Eduardo Jedliczka (TeamFB) jedyfb em gmail.com
Seg Jun 12 14:03:47 -03 2006


Percebi que você trabalha com concatenação no seu Where... (LTRSANANOMES = 
:PANO || '/' || :PMES)

será que não dá para passar isto já concatenado como parâmetro da sua SP ?

Uma outra idéia seria dividir esta SP em 3 ou 4 sps, e verificar qual delas 
está LENTA.

Talvez você tenha algum problema de lógica, e exista alguma maneira de 
resolver este problema de forma mais rápida, realizando alguma alteração na 
estrutura do banco.

======================
Eduardo Jedliczka
Membro do TeamFB - FireBase
Apucarana - PR
======================


----- Original Message ----- 
From: "Rodrigo de Freitas" <rodrigo em rlzinformatica.com.br>
To: <lista em firebase.com.br>
Sent: Friday, June 09, 2006 6:10 PM
Subject: Re: [firebase-br] PERFORMANCE, help galera (toda sugestão é bem 
vinda), A/C: Marlon David, Kléber Caneva, Eduardo Jedliczka (TeamFB)


A/C: Marlon David,

 O problema se encontra numa Stored Procedure, analisando o PLAN dessa
procedure, e das tabelas utilizadas todas
estaum sendo lidas pelas PK, ate ai acho q ta chiq...

 Mas se eu comentar essas 3 tabelas (gigantes), o calculo fica um TIRO,
muito rapido, foi ai q cheguei nessa conclusão

 Sobre bkp/restore, foi a primeira q realizamos diante dessa situação;

 Agora sobre aumentar o DefaultDbCachePages, SortMemBlockSize e
SortMemUpperLimit no firebird.conf,
 naum si como funciona irei pesquisar e fazer as alterações



A/C: Kléber Caneva
 Os select das 3 tabelas estaum individuais, analizei pelo plan e todos
estaum sendo lidos pelas PK´s segue abaixo

 Obs: Esse SQl é nescessario rodar 2 vezes para obter a leitura atual e
anterior;

 SELECT LEITURA_SANEAMENTO.LTRSANANOMES, LEITURA_SANEAMENTO.LTRSANSEQ,
LEITURA_SANEAMENTO.LTRSANDATA, LEITURA_SANEAMENTO.LTRSANLEITURAMES,
LEITURA_SANEAMENTO.LTRSANCONSUMOINFORMADO,
LEITURA_SANEAMENTO.OCORCODLEITURAMES
        FROM LEITURA_SANEAMENTO
        WHERE LEITURA_SANEAMENTO.LTRSANANOMES = :PANO || '/' || :PMES
        AND LEITURA_SANEAMENTO.IMOBURBCOD   = :IMOBURBCOD
        AND LEITURA_SANEAMENTO.LTRSANSEQ    = :LTRSANSEQ
        ORDER BY 1

 FOR SELECT PARCELAMENTO_SERVICO.PARCSERVANOEXERCICIO,
PARCELAMENTO_SERVICO.PARCSERVNUMERO, PARCELAMENTO_SERVICO.RECCOD,
PARCELAMENTO_SERVICO.PARCSERVGRUPOCADASTRO,
PARCELAMENTO_SERVICO.PARCSERVGRUPOCOD,
PARCELAMENTO_SERVICO.PARCSERVPARCELAINICIAL,
PARCELAMENTO_SERVICO.PARCSERVQTDPARCELA, PARCELAMENTO_SERVICO.INDECONCOD,
   RECEITA_PARCELAMENTO_SERVICO.RECPARCSERVSEQ,
RECEITA_PARCELAMENTO_SERVICO.RECCODTAXA,
RECEITA_PARCELAMENTO_SERVICO.RECPARCSERVVALORLANCADO,
RECEITA_PARCELAMENTO_SERVICO.RECPARCSERVVALORRESTANTE, NULL, NULL
   FROM PARCELAMENTO_SERVICO, RECEITA_PARCELAMENTO_SERVICO
   WHERE PARCELAMENTO_SERVICO.PARCSERVANOEXERCICIO =
RECEITA_PARCELAMENTO_SERVICO.PARCSERVANOEXERCICIO
     AND PARCELAMENTO_SERVICO.PARCSERVNUMERO       =
RECEITA_PARCELAMENTO_SERVICO.PARCSERVNUMERO
     AND
     (
     CASE
     WHEN STRLEN(PARCELAMENTO_SERVICO.PARCSERVPARCELAINICIAL) = 1 THEN
PARCELAMENTO_SERVICO.PARCSERVANOEXERCICIO || '/0' ||
PARCELAMENTO_SERVICO.PARCSERVPARCELAINICIAL
     WHEN STRLEN(PARCELAMENTO_SERVICO.PARCSERVPARCELAINICIAL) = 2 THEN
PARCELAMENTO_SERVICO.PARCSERVANOEXERCICIO || '/'  ||
PARCELAMENTO_SERVICO.PARCSERVPARCELAINICIAL
     END) <= :CALCANOMESREF
     AND PARCELAMENTO_SERVICO.PARCSERVGRUPOCADASTRO = :GRUPOCADASTRO
     AND PARCELAMENTO_SERVICO.PARCSERVGRUPOCOD      = :GRUPOCODIGO

   ORDER BY PARCELAMENTO_SERVICO.PARCSERVANOEXERCICIO,
PARCELAMENTO_SERVICO.PARCSERVNUMERO,
RECEITA_PARCELAMENTO_SERVICO.RECPARCSERVSEQ,
RECEITA_PARCELAMENTO_SERVICO.RECCODTAXA

O Problema da operacao é qdo acesso as 3 tabelas q citei, se eu comenta-
las
a procedure fica um tiro...



A/C: Eduardo Jedliczka (TeamFB)
 Hoje nosso sistema de arquivos é NTFS, o Page Size atual do banco 4096,
 Pelo q li isso depende do HD se fat32 ou NTFS, ele estava com 16.384, e
depois q baixamos ele ficou + rapido (ganhamos uns minutinhos...)

 Sobre o gargalo (Rede ou Server), depois q colocamos mais memoria notei q
o
processamento no SERVER parou de atingir os 100% e de utilizar memoria
swap;
 O Server naum atinge mais os 100% de processamento, no gerenciador de
taferas da para notar q ele trabalha folgado... (mas naum da o resultado,
tipo fica amarrado)

 Analisado o PLAN a unica coisa q consigo entender (é meio confuso) é q os
dados estaum sendo lido pelas PK´s



Valeu pelas dica galera...



----- Original Message -----
From: "marlon david de souza" <marlon em sysmo.com.br>
To: "Rodrigo de Freitas" <rodrigo em rlzinformatica.com.br>; "FireBase"
<lista em firebase.com.br>
Sent: Friday, June 09, 2006 6:20 AM
Subject: Re: [firebase-br] PERFORMANCE, help galera (toda sugestão é bem
vinda)


  Primeiro analise o "plan" da consulta SQL que está usando estas 3 tabelas
para ver o numero de registros que está sendo lido, bom como os índices
usados.
  Outra coisa à se fazer é um backup/restore da base.
  Se o Firebird for Super-Server, tente aumentar os seguintes parametros no
firebird.conf: DefaultDbCachePages, SortMemBlockSize e SortMemUpperLimit.

Em Sex 09 Jun 2006 11:54, Rodrigo de Freitas escreveu:
> Bom dia grupo
>
> Estou me deparando com um problema de PERFORMANCE q é a coisa mais [com
> todo respeito (FODA) de se resolver], pois naum existe debugador e muitos
> menos fonte para analisar e entender seu funcionamento, o q se encontra é
> apenas Probabilidades de situações (nada concreto)
>
> Entaum venho ao grupo solicitar alguma dica ou procedimentos a adotar,
> para
> solucionar ou amenizar esse problema
>
>
> Minha situacao;
>  - O Banco contem 3.5Gb é esta instalado num Server P4 (Dedicado), (sem
HD
> Scsi) com 1Gb de Ram;
>  - Sistema Operacional Windows Server (2003);
>
> A tabela principal possui 180.500 registros
>
> As outras 2 tabelas relacionadas a ela
>  2ª 1.706.593 registros
>  3ª 7.840.762 registros
>
> O problema de performance acontece somente na Leitura dessas 3 tabelas
das
> 152 existentes, toda parte de
> processamento (Calculos em Stored Procedures) é rápida, ao debugar a
> procedure noto q o (gargalo) acontece na leitura dessas 3 tabelas...
>
> Sobre Indices e relacionamentos, criamos de tal maneira (somente o
> nescessario) para um bom relacionamentos (naum entupimos de indices);
>
>
> É isso ai turma,
> E ai por onde devo começar ???
>
> Rodrigo de Freitas




______________________________________________
FireBase-BR (www.firebase.com.br) - Hospedado em www.locador.com.br
Para editar sua configuração na lista, use o endereço 
http://mail.firebase.com.br/mailman/listinfo/lista_firebase.com.br
Para consultar mensagens antigas: http://firebase.com.br/pesquisa 





Mais detalhes sobre a lista de discussão lista