Página 1 de 3
Sistemas em Rede
Enviado: 31 Dez 2007 09:11
por PAULO S
Pessoal, é um grande prazer participar de um fórum deste nível, que por sinal já acompanho a muito tempo.
Estou iniciando a migração dos meus sistemas para xHarbour e índices CDX. Ainda uso Clipper 5.2d e índices NTX.
O tema é o seguinte: Alguns dos meus sistemas começaram a ficar lentos em algumas pesquisas que envolviam arquivos de dados com maior quantidade de registros, até mesmo para abertura destes arquivos na entrada no sistema.
Como trabalho com os arquivos de dados e índices: Após a entrada no sistema abro todos os arquivos de dados e índices em como compartilhado que permanecem assim, somente fechando quando há necessidade de uso em modo exclusivo ou na saída do sistema. Todos os travamentos necessários de arquivos e registros são feitos adequadamente quando necessários.
Se rodo o sistema na máquina que está instalado o banco de dados, tudo fica muito rápido, mas se acesso por um terminal já fica mais lento e se dois acessam ao mesmo tempo fica muito lento. Já testei instalando numa máquina com Windows 98 e ligada apenas a outro com XP, quando roda apenas uma fica legal, mas as duas juntas fica muito lento.
Posso estar fazendo alguma coisa errada ? Está correto este tipo de trabalho e abertura de arquivos ?
Se alguém puder me dar uma luz, agradeço muito.
Feliz 2008 a todos !
Enviado: 31 Dez 2007 10:28
por alaminojunior
Olá meu caríssimo, seja bem vindo.
Pelo que vc relatou, está tudo em ordem com o tratamento dos arquivos e indices.
Sendo assim, creio que seria interessante verificar o hardware de rede ( placas, hub´s, cabeamento, protocolo utilizado, etc...) e ainda checar as configurações de teu servidor. Aliás qual o sistema usado em seu servidor ?
Enviado: 31 Dez 2007 10:50
por rochinha
Amiguinho
Lentidão com dados basicamente envolve memória das maquinas das rede, pois no momento da abertura dos arquivos, se não existir memória suficiente este equipamento irá usar a memória cache em disco tornando mais lento e propicio a erros de corrupção.
Eu geralmente defino o montante de memória com o mesmo valor de megaherts da maquina, exemplo: pentium 166 - minimo 156 e ai por diante, pentium 266 - minimo 256, etc.
Com o uso de .NTX voce aumenta o volume de arquivos abertos, aumentando a possibilidade de um dos indices deixar de abrir por falta de memória e possivel corrupção.
Usando .CDX voce fará uma diminuição de arquivos abertos sendo que um arquivo .DBF com um arquivo .CDX pode manipular até 15 chaves por .CDX, enquanto que com .NTX voce precisaria de 15 arquivos.
As filtragens com .CDX ficam super simplificadas com o use de ESCOPOS, ou seja, registros limitados por um ponto de inicio e fim.
Exemplo:
Voce tem uma chave que ordena o arquivo CLIENTES pelo nome e deseja filtrar todos os clientes entre C e E, voce poderia usar SET FILTER mas isto tornaria sua aplicação super lenta. Como os escopos trabalham diretamente no .CDX eles filtram no indice e linkam a tabela de forma instantanea.
Mesmo fazendo uso de .CDX, aconselho voce a melhorar a memória das maquinas.
Não adianta fazer tunning numa ferrari que usa motor de fusca.
Enviado: 31 Dez 2007 11:03
por alaminojunior
Já que o Rochinha mencionou também a questão de indices e filtros...
Dê só uma olhada.
https://pctoledo.org/forum/viewtopic.php?t=7266
Enviado: 31 Dez 2007 12:03
por PAULO S
Alamino e Rochinha, :{
Obrigado pela atenção, quanto às máquinas vou dar uma checada nas redes que estão mais lentas, entretanto, como disse, fiz um teste com apenas duas máquinas interligadas e memória suficiente, mas quando realizam uma pesquisa com arquivos maiores, ao mesmo tempo, ficam muito lentas.
Realmente .CDX aumentou o desempenho quando comparado com .NTX, fiz as comparações cronometradas. Vou estudar melhores as pesquisas e filtragens para aproveitar melhor os recursos do .CDX. Depois volto a postar, provavelmente com dúvidas. Mais uma vez obrigado pela ajuda e Feliz Ano Novo. :)Pos :xau
Enviado: 31 Dez 2007 13:26
por sygecom
Minha modesta opnião pessoal, abra somente os DBF que for usar em determinada area de seu sistema, ou seja não abra tudo no começo do sistema, algo talvez dessnecessario caso não for usar todos os DBF, no meu caso se eu fizer isso em um sistema de medio porte com 80 ou 90 .DBF mais 80 ou 90 .CDX....isso seria como um tiro no pé.
Abraços
Leonardo Machado
Enviado: 31 Dez 2007 19:22
por PAULO S
Leonardo,
É exatamente deste tipo de opinão que preciso, desejo saber como costumam proceder e porque, para que passa avaliar e testar estas opções.
Quanto mais sugestões melhor a gama de possibilidades para teste e assim talvez possa resolver este problema e auxiliar outros que possam te-lo também.
Espero outras sugestões...
Valeu Sygecom. Feliz 2008 !
Enviado: 01 Jan 2008 16:32
por asimoes
Olá Paulo,
Outra informação: Defina somente files e buffers para a quantidade de tabelas que o
seu sistema for usar:
Aplicação com 100 tabelas: files=110 (O ideal é abrir a tabela somente quando for
necessário, conforme dica do Leonardo)
E buffers multiplos de 8: 8 16 32..
Quanto maior o uso de files e buffers menos memória disponível.
Se possível o servidor ser dedicado.
Feliz Ano Novo.
[]´s :)Pos
Enviado: 02 Jan 2008 10:28
por jfilho.ze
Amigo Paulo S,
Seu problema é de projeto, reveja seus conceitos, pois abrir todos os dbf´s na entrada do sistema, véio é LOUCURA. :|<
Enviado: 02 Jan 2008 11:17
por PAULO S
Valeu Pessoal !
É isso, ainda não efetuei os testes, mas se for o caso, para solucionar o problema, refarei o projeto do sistema.
Ainda aguardo outras opiniões. Obrigado a todos.
Bom início de ano novo a todos. :)Pos
Enviado: 02 Jan 2008 11:32
por alaminojunior
abrir todos os dbf´s na entrada do sistema, véio é LOUCURA.
:?
Acredito que o problema não seja bem este !
O nosso amigo Paulo S disse que está migrando seus sistemas para xHarbour com indices CDX. Se o sistema funcionava bem com o Clipper, não vejo porque não funcionaria bem com o xHarbour.
Acredito sim que precise ser feita uma revisão nos códigos onde envolve é claro, bancos e indices.
Ao que me parece o sistema dele foi crescendo (banco de dados), e com isso precisa ser feita uma manutenção nos bancos. PACK´s, Reindexar os bancos de forma mais eficiente (se possível indexar sem colocar funções nos campos), etc...
Tomar cuidado com os commit´s da vida, como nós já temos falado tanto por aqui.
Lembrando da sequencia ideal:
trava > replace > commit > destrava
Commit é a mesma coisa de DbCommitall() - Descarrega os buffers de todas as areas de trabalho abertas.
DbCommit() - Descarrega apenas o buffer da area de trabalho atual. Dê preferencia a este tipo.
Abrir todos os dbf´s na abertura do sistema pode sim causar uma ligeira lentidão "no início".
Depois que todos os dbf´s estão abertos...( o proprio nome já diz "ESTÃO ABERTOS" )
Enviado: 02 Jan 2008 13:44
por PAULO S
Alamino,
Realmente estou migrando os sistemas para xHarbour/.CDX, mas alguns sistemas já apresentavam lentidão no Clipper, melhorou o desempenho com a migração, entretanto ainda é lento. Mudei algumas estruturas de índices e também melhorou, mas não o suficiente, por isso estou buscando outras opiniões para este problema. E a lentidão só é maior quando um determinado arquivo é utilizado por mais de um terminal. Isso é normal acontecer ?
Enviado: 02 Jan 2008 15:18
por alaminojunior
Isso é normal acontecer ?
Dependendo das circunstancias é normal, porém não desejável né ?
Quantos dbf´s vc possui ?
Ele está muito fragmentado ?
Que maquina vc usa como servidor ?
Que rede é utilizada ? 10 ou 100 ?
Ao usar indices CDX, vc deverá deleta-los antes de reindexar, senão eles vão crescendo,
crescendo,
crescendo.... e deixando tudo uma .....
Enviado: 02 Jan 2008 15:28
por ederxc
alaminojunior escreveu:Isso é normal acontecer ?
Ao usar indices CDX, vc deverá deleta-los antes de reindexar, senão eles vão crescendo,
crescendo,
crescendo.... e deixando tudo uma .....
... Quanto a esse lance de crescer não intendo , pois eu fiz um pequeno teste, reindexei minha aplicação , varias e varias vezes , e após ter feito isso , fui ver o tamanho dos arquivos CDX , alguns maiores e outros menos , porem ao deletar e criar novamente o tamanho não mudou nada , como isso então ??
Enviado: 02 Jan 2008 15:38
por alaminojunior
porem ao deletar e criar novamente o tamanho não mudou nada , como isso então ??
Mas foi exatamente o que eu disse. Se vc não deletar o CDX antes de reindexa-lo, ele vai somando outras bag´s no final, e não sobreescrevendo, como seria o ideal.