Página 1 de 1

Indexar arquivo dbf com 2 milhões de registros

Enviado: 25 Abr 2006 19:25
por Fabiano
Olá, gostaria de saber se alguém já passou por esta triste experiência: tentar indexar um arquivo .cdx com 4 tags de um dbf com 2 milhões de registros e trombar o famigerado "General Protect Fault".

Caso afirmativo, qual o rumo foi tomado ?

Preciso colocar esse arquivo pra funcionar de qualquer maneira...

Grato pelas eventuais ajudas.....

Enviado: 25 Abr 2006 21:30
por alaminojunior
Qual linkador vc usa ?

Enviado: 26 Abr 2006 13:23
por Fabiano
Eu uso o Exospace 1.0...

Enviado: 26 Abr 2006 13:33
por momente
Caro Amigo Fabiano,

Você ja testou com o blinker 7.0? :-o

Enviado: 26 Abr 2006 13:40
por Fabiano
Vc acha mesmo que o problema está no compilador ???? O tamanho do arquivo eu já considero grande..... não seria esse o problema ????

O problema do Blinker é a dificuldade de encontrá-lo na rede, vc por acaso o tem aí ????

Abraço !

Enviado: 26 Abr 2006 14:23
por alaminojunior
Tenho quase certeza que trocando o compilador resolva sim !
Use o Blinker 7 em modo extendido.
Não me lembro onde, mas neste fórum tem um link para baixá-lo, caso preferir, me mande um e-mail que lhe envio.

Enviado: 26 Abr 2006 21:46
por Fabiano
Gostaria de saber se existe ainda mais alguma solução para conseguir indexar o arquivo, visto que o arquivo linkeditado com o blinker não funcionou !!!

Abaixo colo o conteúdo do meu programa idxall.lnk para conferência de um eventual erro.....

BLINKER INCREMENTAL OFF
BLINKER CLIPPER PAGE OFF
BLINKER link XMS ON
BLINKER EXECUTABLE EXTENDED 2048
BLINKER HOST MESSAGE ON
BLINKER HOST DPMI ON
BLINKER HOST VCPI ON
BLINKER HOST XMS ON
BLINKER PROCEDURE DEPTH 70
BLINKER EXECUTABLE COMPRESS 1

FILE idxall

LIB BLXCLP52, BLXRATEX, DBFCDX

Grato

Enviado: 26 Abr 2006 23:48
por vagucs
talvez possa esta corrompido a base de dados, apesar de estar sendo aberta normalmente.

Enviado: 26 Abr 2006 23:53
por Dudu_XBase
Boa Noite.
Uma pergunta, vc esta deletando o cdx antes de indexar e "packeando" ?

Tente fazer isso tb...
1. renomeie o dbf...
2. crie um outro banco com a msm estrutura...
3. crie os indices nesse dbf vazio...
4. e execute um append from...do dbf q vc renomeou...
5. depois renomeie o dbf criado já com o indice ok para o nome correto...

Enviado: 27 Abr 2006 03:21
por Stanis Luksys
Olá,

Acredito que seja uma boa alternativa esta do Dudu, mas o append from tem q ser dado com os indices ja abertos, senão de qualquer modo o indice ficará desatualizado, e necessitará de um reindex (e com reindex o risco de corromper tbm é grande) ou então na primeira alteração de um campo chave o indice sera criado por inteiro, ja q estaria vazio...

Agora, falando sério mesmo, 2 milhões é muito registro prum pobre DBF... heheh. Talvez esteja na hora de tentar um banco de dados relacional, eu recomendaria.

Enviado: 27 Abr 2006 09:53
por vagucs
Olha, tente compilar com o xHarbour, que os indices e DBF tem menos limitações do que com o clipper.

Enviado: 27 Abr 2006 11:39
por Fabiano
Meu receio é exatamente esse: arquivo DBF muito grande, mas já ouvi falar de casos com DBF de até 3 milhões e sem nenhum problema de corrupção de índices.

Por isso ainda estou pensando em tentar uma solução para por esse arquivo pra rodar....

Existe um corrente de pensamento que acha que o problema está no linkeditor do programa responsável pela indexação do arquivo e outra que acha q o arquivo está grande mesmo !

O que também pude constatar é que se eu diminuir o tamnho do meu índice, ou seja, o tamanho dos campos do meu DBF, o programa tem uma "sobrevida" e consegue indexar o arquivo....

Por isso ainda peço, qualquer ajuda sempre é válida.... eu não conheço o xHarbour e gostaria saber mais detalhes sobre o mesmo !

Já tentei o Blinker, mas a diferença é que esse linkeditor cria a aplicação, mas simplesmente "trava" o processo de indexação !

Caso haja interesse posso passar o programa que eu criei para indexar o arquivo e assim compartilhar com vcs esse desafio...

Só pra refrescar a memória: meu DBF tem quase 2 milhões de registros e meu indice .CDX possui 4 tags.

Grato mais uma vez !

Enviado: 27 Abr 2006 15:07
por momente
Caros amigos,

Aproveitando aí o problema do amigo Fabiano, no caso de arquivos de indices .CDX, qual a diferença entre usar tags e/ou nomes para cada indice.

Ainda fico na dúvida sobre isso!

Valeu amigos!
:-o

Enviado: 12 Mai 2006 16:52
por Trazom
é assim tags sao sub-indices em um mesmo .cdx no caso,

eu mesmo uso até 40 tags em dbf com 10 milhoes de registros e a solução q sempre encontro quando passo por isso é resolver tudo, no caso hd, fragmentacao , corrupcao, desde os 2 milhoes de registros aprendi a criar um dbf novo e dar um append from arqantigo next 500.000 e faco um loop pra cada meio milhao de registros, assim da tempo e hd gravar o swap file pra depois gravar definitivamente no dbf

da pra ver isso direitinho acontendo quando indexo diretamente no servidor e fico espiando aqueles arquivos tipo ADSAAASA serem criados

Enviado: 15 Mai 2006 13:48
por Fabiano
Bom gente, apareci aqui pra agradecer a preocupação de todos na solução deste episódio e também para deixar claro que consegui resolver a situação graças à dica do nosso moderador Dudu, ou seja: arquivo e índices zerados e com o índice aberto, um append from da tabela atual.

A única desvantagem nisso tudo é o tempo de execução da tarefa, mas a compensação é que a tabela está estável e dessa maneira, chega a suportar, com folga, até 7.500.000 de registros ( só não fiz testes com mais registros porque me faltou tempo, mas creio que não encontraria dificuldades em fazê-lo ! )

Mais uma vez, obrigado !

Até a próxima !