Boa tarde à todos Estou trabalhando há dois meses com este sistema (desenvolvido em PHP) é um sistema de gestão de supermercados e com algumas dicas que vocês me passaram já percebi uma melhora aqui no escritório, vou fazer amanhã no cliente também!
Realmente, além do vacuum, eu precisei criar um índice para cada campo que eu uso em critério e em ordenação, isso melhorou consideravelmente o retorno da query, minha preocupação é o que pode acontecer com o tamanho do meu banco de dados com tantos índices, eles aumentam muito o tamanho? eu estou com a versão 8.1 percebi também que se eu disparar uma query muito pesada dá pau no postgres, ai a query fica correndo em loop, só fechando e abrindo o postgres novamente para voltar ao normal é a versão ou minha máquina? isso aconteceu no cliente algumas vezes, pelo relato dele, ao chamar um relatório pesado, algumas vezes ninguém mais conseguia usar, só reiniciando a máquina, lá no cliente é a 8.2 ______________________ Estrutura da tabela leitura_estoque ( codregistro numeric(4) NOT NULL, codemitente numeric(4) NOT NULL, codestabelec numeric(4) NOT NULL, codproduto numeric(7) NOT NULL, documento varchar(20) NOT NULL, codtpdocto varchar(10) NOT NULL, numitem numeric(3), guiche numeric(3), equipamento numeric(4), dtmovto date, quantidade numeric(15,4) NOT NULL DEFAULT 0, preco numeric(15,4) NOT NULL DEFAULT 0, desconto numeric(12,2), vendedor numeric(9), coddepto numeric(4), tributacao varchar(4), aliqtributacao numeric(5,2), hora time, custocontabil numeric(12,2), idregistro numeric(9) NOT NULL, seqleitura numeric(9) NOT NULL, cupom varchar(6), aliqreducao numeric(5,2), pontos numeric(9,2) DEFAULT 0, funcao numeric(4), piscofins numeric(1), lucratividade numeric(15,2) NOT NULL DEFAULT 0, totitem numeric(15,4) NOT NULL DEFAULT 0, CONSTRAINT leitura_estoque_pk PRIMARY KEY (seqleitura), CONSTRAINT leitura_estoque_estabelec_fk FOREIGN KEY (codemitente, codestabelec) REFERENCES estabelecimento (codemitente, codestabelec) ON UPDATE NO ACTION ON DELETE NO ACTION ) ____________ query select max(Fornecedor.CodFornec) as Codigo, Fornecedor.Nome as Descricao, Sum(Quantidade) as Quantidade, Sum(TotItem) as Preco, Sum(Quantidade * Lucratividade) as Lucratividade, Sum(Quantidade * Custo) as Custo , Sum(V_CurvaABC.Desconto) as Desconto from V_CurvaABC inner join ProdFornec using (CodProduto) inner join Fornecedor on (ProdFornec.CodFornec = Fornecedor.CodFornec) where CodEmitente = 1 and DtMovto between '15/09/2006' and '15/09/2007' group by Fornecedor.Nome order by Sum(TotItem) Desc Limit 50 Obrigado pela atenção. Tue, 16 Sep 2008 11:20:38 -0300, André Volpato <[EMAIL PROTECTED]> escreveu: > Rodrigo Monteiro escreveu: > > > > Bom dia a todos. > > > dia! > > > Eu trabalho com um sistema intranet em PHP com banco de dados > > postgresql, versão 8.2 > > a base de um determinado cliente já alcançou 4GB de tamanho e não pára > > de crescer, é uma rede de varejo e são muitas movimentações diárias, > > existe um servidor IBM dedicado para o banco de dados, só que o > > problema está na hora de gerar relatórios gerenciais ... > > > > Em primeiro lugar, 4GB não é nada... :) O Postgres lida com esse tamanho > tranquilamente. > Veja se vc consegue atualizar da 8.2 para a 8.3.3... vai ajudar na > performance, > principalmene dos sorts. > > > > (...) me parece qque não importa se o campo tem indice ou não, demora > > muito para trazer a informação, considerando que os testes eu tenho > > feito são em uma máquina aqui na empresa dedicada a este teste e que > > no cliente o tempo é muito maior pela quantidade de processos > > executados simultaneamente. > > > > Sobre o servidor, ele deve ser dedicado também no cliente, se possível. > Índices ajudam na cláusula WHERE e JOIN, verifique se os campos de > restrição estão indexados. > Relatórios gerenciais muitas vezes não usam índice mesmo, dependendo da > query... > Você parece ter problemas de estrutura, e também de configuração. > > > GOSTARIA DE SABER SE EXISTE ALGUM TIPO DE "INDICE TEMPORARIO" PARA > > CAMPOS SOMADOS? O que eu tenho que verificar para melhorar a > > performance do meu banco de dados? Eu tenho uma versão para Sql Server > > que está em testes e que já demonstrou muito mais agilidade. > > > > Não existem índices temporários, mas existem situações onde vc pode > criá-los em > tempo real, apenas para satisfazer um relatório. Não é comum, mas ... > > Sobre a performance, mande pra gente: > - tuas confs de memória do postgresql.conf > - especificações dos servers ibm > - saída do comando EXPLAIN ANALYZE <query> > > > -- > > []´s, ACV > > > _______________________________________________ > pgbr-geral mailing list > [email protected] > https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral > > > > _______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
