DUVIDA COM BANCO DE DADOS FIREBIRD

MARCELOKROL 26/04/2014 20:54:09
#437655
Pessoal... Trabalho a vários anos com o firebird e gosto muito dele e acho que pra mim não compensa mudar, visto que já desenvolvi muitas ferramentas e sistemas com ele. Só que visitando alguns clientes onde esses estavam reclamando que o sistema estava muito lento de um tempo pra cá, observei uma pequena falha no mesmo, se é que posso chamar isso de falha.
Quando há muitas inclusões e exclusões no banco de dados ele incha um pouco, observei isso em um cliente em especial, que continha uma base de dados de mais ou menos 300mb. Bom, quando vi esse cenário fui logo pedindo pra todo mundo sair do sistema e realizei um Backup e um Restore, o banco de dados encolheu mais ou menos uns 20mb, se for analisar é pouco, mais o cliente não gosta muito de investir em cpus nervosas, creio que com isso venha as lentidões.
Bom... mais vamos logo a duvida: para transmitir a tabela de produtos da retaguarda para frente de caixa faço uso de uma tabela externa ou arquivo externo, apenas 1 arquivo, então... vocês usam este recurso? Se utilizar ele para outras tabelas, como por exemplo a tabela de cupons, onde esta gera muitos registros durante o dia, vai acarretar em perca de desempenho?

Obrigado e boa noite a todos
NETMANIA 27/04/2014 20:23:33
#437668
Boa noite.

Com base que você relatou, sim, isso pode ocorrer, pois se uma tabela já está fazendo isso, imagine a que guarda os dados do cupom? Neste caso, o que posso aconselhar é gravar os dados uma vez por dia, no fechamento da loja, assim, você sobrecarrega o servidor, depois da um alivio no banco.

Se o problema persistir, você pode tentar usar o MySQL, porem, quando se usa o banco INNODB (o que suporta integridade, transações, etc), este vai crescer, mas pode ser uma solução.

Uma dúvida, a máquina onde fica hospedado o Firebird é Windows ou Linux?

Caso seja Windows, você pode usar o SQLServer Express, que suporta bancos até 10Gb, fora que você tem os recursos de compressão do banco, e outros recursos.

Outra coisa, como está a criação da parte do índices?
MARCELOKROL 27/04/2014 21:18:51
#437670
Ola NetMania, obrigado pela resposta, e respondendo as suas perguntas: sim, a maquina é windows; Os indices eu cuido muito disso e sempre faço testes de performance com as tabelas antes de colocar no cliente.

Mas a duvida principal é a seguinte: Com relação a tabelas externas, ou seja, criar um arquivo externo para as movimentações, por exemplo: mês 04/2014, assim para toda a movimentação dos cupons eu criaria o arquivo externo: [ô]mov_04-2014.tb[ô] e la ficaria todos os cupons do mês 04/2014, e assim por diante mês a mês. Isso pode reduzir a performance do banco de dados?
NETMANIA 28/04/2014 07:47:04
#437677
Acredito que não, pois você vai ter uma base menor para pesquisar, porem, se precisar de mais de um mês, você terá mais trabalho, pois terá que acessar todas as tabelas dos meses que deseja consultar, bem como em caso algum cliente peça para fazer um relatório para saber por mês qual é o produto mais vendido, etc.

Por curiosidade, quantos registros tem e média as maiores tabelas?

Sobre o servidor, qual o Windows que ele está utilizando?
GUIMORAES 28/04/2014 10:19:42
#437686
Olá Marcelo.

Já enfrentei muito isto, já tive cliente que a Base de dados estava com mais de 19 Gigas .
O que determina muito o crescimento da base é a quantidade de transações, insert, update, delete, isto faz com que ela [Ô]Inche[Ô].
A solução mais simples é fazer um backup da base, excluir os dados da tabela com mais fluxo de informações e fazer um backup-restore do firebird.
Mas o que fica lerdo em sua base de dados, insert ou fazer select?
Até hoje não consegui solucionar este problema, independente da versão do firebird ela ocorre, mas percebi que com o uso de gatilhos isto ocorre com mais frequência.

O que faço para não atrapalhar o desempenho no frente de caixa é utilizar uma tabela temporária, ex: CREATE TABLE [Ô]0VENDAS[Ô](CUPOM INTEGER);. Desta forma não vejo perca de desempenho, e ao finalizar a venda realizo um insert da tabela temporária a tabela principal.
NETMANIA 28/04/2014 13:39:13
#437694
Olá Marcelo.

Será que isso não seria um bug do Firebird? Como eu usei o SQL Server com mais frequência, e via que o banco mesmo com carga massiva de dados, ele dava uma crescida, mas não afetava o seu tamanho.

O MySQL com o banco INNODB, ele vai crescendo aos poucos, mas se você apaga os dados, ele preserva o tamanho (ao contrário do SQL Server que tem o recurso para reduzir o tamanho físico da base), apagando o espaço a mais que ele vai criando, quando ocorre muitas alterações nos dados.
MESTRE 28/04/2014 14:49:17
#437697
Utilizo o MySQL aqui e ta com 296MB .. Graças a deus 1 B.O. a menos..

MySQL é muito bom ! gosto bastante!!
Tópico encerrado , respostas não são mais permitidas