Lentidão ao acessar DBFs pela rede

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Lentidão ao acessar DBFs pela rede

Mensagem por Paulao »

Boa tarde pessoal.
Estou com um problema de lentidão nos meus sistemas quando rodam em rede, uma rotina em particular, o cadstro de pedidos, ele abre o arquivos de pedidos e o arquivo de itens do pedido.
Utilizo indices cdx, e tenho uma rotina para filtrar os itens do pedido:

Código: Selecionar todos

func itensped(par1)
sele ficnomad
if par1="E"
    arqped=setmaq+"ped.idx"
    dbsetorder(0)
    index on item_fic to &arqped for flag_fic = pflag_ped .and. dtpc_fic = pednomad->dtpc_ped
    clos ficnomad
    opendbf("ficnomad","fic01","&arqped")
    dbsetorder(2)
    dbgotop()
elseif par1="S"
    set inde to fic01
    dele file arqped
endi
retu .t.

O meu script de compilação é assim:

Código: Selecionar todos

BLINKER INCREMENTAL OFF 
BLINKER EXECUTABLE EXTENDED 
BLINKER EXECUTABLE CLIPPER //F:200 //DYNF:8 //SWAPK:65535 //SWAPPATH:"C:\" //TEMPPATH:"C:\" 
BLINKER EXECUTABLE NODELETE
BLINKER HOST DPMI ON
BLINKER HOST VCPI ON 
BLINKER HOST XMS ON 
BLINKER EXECUTABLE COMPRESS 1 

nobell
MAP S,A

FILE nomad,nomadfu1,nomadarq,nomadar2,nomadar3,nomadin1,nomadin2,nomadpr1,nomadpr2,nomadpr3,nomadfin,nomadche,timeslic,nomadpla,nomadpro,nomadcus,nomadest,nomadnfe,nomadger,nomadnf2,nomadin3,nomadgen
OUTPUT nomad

SEARCH BLXCLP52 
LIB CLIPPER
LIB DBFCDX
lib ctp


Os amigos poderiam me dar uma mao, andei procurando pelo forum mnas nao achei muita coisa, ja tirei os commits das rotinas, coloquei o timeslic mas a lentidao continua, as vezes demora uns 10 segundos para abrir a tela de pedidos.


Obrigado a todos
Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Lentidão ao acessar DBFs pela rede

Mensagem por Paulao »

Esqueci de comentar é que esta rotina de pedidos alem destes dois dbfs ela tambem abre mais outros 18 arquivos dbf
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Lentidão ao acessar DBFs pela rede

Mensagem por billy1943 »

Duas coisas me chamaram a atenção.

Primeira, você diz que usa índices .CDX e tem um índice citado (ped.IDX) na formação da variável arqped, que ainda acresce outra variável (setmaq)

Segunda, colocar macrosubstituição(&) em geração de índices deve retardar muito, dependendo do tamanho do arquivo.

Não esquecer que a cada registro a macro vai ser acessada, como se fosse um filtro.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Lentidão ao acessar DBFs pela rede

Mensagem por Paulao »

Bom dia Billy e obrigado pela atencao

Me esclareça por favor, no inicio de meu programa eu coloco estas linhas
REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")
DBSETDRIVER("DBFCDX")
mas os indices criados tem a extenção .IDX, sempre fiz assim, é possivel criar indices com a extenção .CDX?

A variavel setmaq e diferente em cada terminal, eu utilizo para criar um indice temporario para que o operador de cada terminal veja os itens do pedido que esta na tela, como poderia criar um indice temporario sem a utlizacao da variavel setmaq e sem utilizar o operador &?
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Lentidão ao acessar DBFs pela rede

Mensagem por billy1943 »

Para usar .CDX você tem de mudar a forma de indexar arquivos:
Você deve estar usando a forma:

select arq1
index on campo_x to index_1
index on campo_y to index_2
....

O certo para .CDX é usar:

select arq1

index on campo_x tag campo1 to index_1
index on campo_y tag campo2 to index_1
....

ou seja:

as tags podem ter o nome que quiser, desde que diferentes
o único índice gerado é o index_1 que é uma bolsa dos índices que serão acessados normalmente por

set order 1
ou
set order 2
....
Não precisa mudar nada nas suas rotinas que acessavam por essa forma (set order)

Não precisa fazer acesso pela tag.

Outra coisa:
Não pode haver arquivos .DBT para os campos MEMO dos arquivos indexados.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Paulao
Usuário Nível 3
Usuário Nível 3
Mensagens: 186
Registrado em: 09 Jul 2004 11:03
Localização: Franca
Contato:

Lentidão ao acessar DBFs pela rede

Mensagem por Paulao »

Bom dia pessoal.

Estou alterando os indices do meu sistema para .CDX, antes era .IDX. Pergunto, terei mais velocidade em rede com esta mudança?

Como faço para criar um indice temporário em rede com CDX, antes eu fazia assim

Código: Selecionar todos

arqped=setmaq+"ped.idx" 
dbsetorder(0) 
index on item_fic to &arqped for flag_fic = pflag_ped 
clos ficnomad 
opendbf("ficnomad","fic01","&arqped") 
dbsetorder(2) 
dbgotop() 

Obrigado aos amigos
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Lentidão ao acessar DBFs pela rede

Mensagem por billy1943 »

Se você mudar seus índices de .IDX para .CDX, e, se haverá aumento da velocidade é difícil informar, porque muitos fatores
entram tais como processador, tipo da rede, sistema operacional, etc.

O que podemos afirmar é que como os índices de um arquivo ficam em um único .CDX, haverá redução do número de arquivos
abertos ao mesmo tempo.

A manutenção dos índices fica facilitada, pois se quisermos excluir um índice para reorganização excluímos apenas um.

O cuidado na feitura das chaves de indexação é primordial e continuo afirmando: não incluir funções ou macros neles, pois
isso sim consome mais tempo.
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Avatar do usuário
billy1943
Usuário Nível 4
Usuário Nível 4
Mensagens: 570
Registrado em: 12 Mai 2009 17:33
Localização: Bauru-SP

Lentidão ao acessar DBFs pela rede

Mensagem por billy1943 »

Para quem ainda pensou e não resolveu mudar os índices de .NTX ou .IDX para .CDX, tem este tópico que montei há tempos, com praticamente tudo o que é necessário, inclusive para mudar os arquivos .DBT para .FPT:


https://pctoledo.org/forum/viewto ... 42&t=11848
O bom do computador é que ele resolve os problemas, sem nunca levantar nenhum.
Hoje atuo mais com Clipper 52E, e um pouquinho com XHarbour.
Responder