Lentezza tabelle collegate

di il
6 risposte

Lentezza tabelle collegate

Buongiorno,
Sono nuovo del forum, mi presento un secondo. faccio piccoli gestionali in access da qualche anno ormai e solo ora i miei db si sono ingranditi abbastanza da avere la necessita di più postazioni in remoto. Ho un frontend locale ed un back end in remoto aperto con una openvpn. Vedo molto bene e velocemente file vari e cartelle, ma se apro una tabella aprendo semplicemente il BE ci mette dei minuti. La cosa curiosa è che da linea fissa ci mette adirittura di più che non con una vpn su gprs.
Prima di postare ho cercato varie soluzioni in rete, in linea generale mi par di aver capito che dipende dalle query principalmente, ma mi sento di escludere questo, poichè apro il problema è lo stesso aprendo direttamente una tabella sul be che è sul server. I file sono di qualche mega, ma è lento nell'ordine di decine di secondi anche ad aprire tabelle con poche decine di record e campi.
Non ho problemi invece all'interno della stessa rete locale con più utenti, svariate query, svariati menu a tendina eccetera...
Chi mi da un consiglio?

6 Risposte

  • Re: Lentezza tabelle collegate

    Ci sono diversi aspetti in realtà da considerare e fossi in te non escluderei nulla... chi sviluppa in modalità Client-Server ha accumulato esperienza che normalmente da per scontate alcune pratiche ed esclude altre...
    Purtroppo non dai molti dettagli tecnici su cui confrontarsi...
    Ad esempio hai in Tutte le tabelle le chiavi sia primarie che esterne...?(quelle relazionate lato M).
    Le query sono tra tabelle relazionate o sono join....? In questo secondo caso il join avviene su campi indicizzati...?
    Hai usato in query delle funzioni di aggregazione DCOUNT...ECC..?
    Hai scritto query intelligenti ovvero senza 25 criteri, con i jolly, ma solo con i criteri necessari...?
    I criteri sono su campi indicizzati...?
    Usi le transazioni per le query di tipo actions...?
    Hai mantenuto aperto un Recordset vuoto al fine di mantenere attiva la Connection nel pool delle connessioni...?

    Ci sono come vedi tante considerazioni da fare ma tu non ce ne hai esposta nemmeno una tecnicamente quindi ti invito a riflettere in senso più ampio.
  • Re: Lentezza tabelle collegate

    @Alex ha scritto:


    Ci sono come vedi tante considerazioni da fare ...
    Quando ho visto il thread avevo già abbozzato una risposta ma ho voluto aspettare perché sull'argomento non ho molte certezze.
    Giustissimo tutto quello che hai scritto, @Alex, ma non ti sei espresso sull'aspetto che riporto qui di seguito:

    DrugOne ha scritto:


    ...Ho un frontend locale ed un back end in remoto aperto con una openvpn. Vedo molto bene e velocemente file vari e cartelle, ma se apro una tabella aprendo semplicemente il BE ci mette dei minuti. La cosa curiosa è che da linea fissa ci mette adirittura di più che non con una vpn su gprs....
    E' davvero così secondario? Io l'avrei messo al primo posto! (la mia bozza di risposta infatti era incentrata solo su questo)
  • Re: Lentezza tabelle collegate

    La modalità della connessione ovviamente importa ma chiaramente mi sono concentrato sulla connessione su linea fissa che spero sia una LAN..., trascurerei per ora la VPN in gprs, quindi penso sia una cosa abbastanza standard, chiaramente non allineata all'uso in locale, ma su cui le prestazioni non possono essere ridotte in modo devastante a meno di non aver sviluppato male e non aver fatto il contrario di quanto detto sopra.
  • Re: Lentezza tabelle collegate

    Ciao Alex e ciao Phil.
    Inanzitutto ringrazio entrambi e tantissimo Alex; lui non sa, ma con quello che ha scritto in rete mi ha insegnato un mezzo mestiere. Da anni mi sento in dovere di esprimergli gratitudine.
    Per quanto riguarda il mio problema:
    Ho tutte le tabelle con chiave primaria che esterna (cosa significa relazionate lato M?).
    Non ho stabilito relazioni tra tabelle, faccio tutto con i join.
    Ogni tanto uso dcount o altre funzioni di aggregazione.
    Le query di solito le scrivo con i riferimenti espliciti ai campi.
    I criteri ad esempio filtri non avvengono su campi indicizzati.
    Scusami ma ignoro cosa sono le transazioni di tipo action (mi vergogno della mia ignoranza...)
    No, non ho aperto un recordset in vba, ma di solito le maschere di apertura dei db fe contengo in forma non visibile dei subform con tabelle aperte sugli utenti e le impostazioni relative.

    Sebbene ristrutturerò come necessario e come consigliatomi se serve a velocizare, escluderei però problemi di query, poichè se apro il file di progetto ed apro una tabella collegata semplice con pochi campi e poche righe (ad esempio 10 righe e 10 campi, senza aprire nessuna query) devo attendere anche qualche minuto, il che rende impossibile poi effettuare anche banali operazioni. La cosa curiosa è che invece l'inserimento me lo fa anche velocemente su quella banale tabella. Stessa cosa se apro direttamente il be e la tabella da remoto sul server oppure se apro il file accde in locale. Le cartelle me le apre come fosse in locale (la velocità di questa operazione mi stupisce), ma i file BE ... a voglia...
    Ah, sta un sacco anche a chiudere il db be.
    In lan dietro lo stesso router non ho problemi. In vpn con connessione fissa tra vari stabilimenti invece son volatili per diabetici.
    Potrebbe essere la qualità della connessione (se di db so poco, di reti non so nulla)?
  • Re: Lentezza tabelle collegate

    Perché non hai relazionato le tabelle...? Scelta estremamente strana... e se non consapevole tecnicamente direi discutibile.

    Le relazioni sono di 2 tipi, ma di solito ci si limita alla relazione 1-Molti(M)... per relazionare le tabelle devono esserci record con dati correlati... insomma servirebbe tu avessi conoscenza della Normalizzazione ed almeno delle prime 3 regole di 5.

    Quando dici che le query le scrivi con riferimenti espliciti ai campi in realtà intendevi ai controlli nelle Form... in caso definizione criteri...?(purtroppo dobbiamo capirci... serve usare un.minimo di tecnicismi).

    In relazione alle query con MOLTI CRITERI e di cui magari non tutti saranno compilati... in molti scrivono pasticci tipo:
    
    SELECT * FROM T1
    WHERE
        [Campo1]=Forms!NomeForm!Nomecontrollo1 OR Forms!NomeForm!Nomecontrollo1 IS NULL
        [Campo2]=Forms!NomeForm!Nomecontrollo2 OR Forms!NomeForm!Nomecontrollo2 IS NULLcode]
        Ecc...
    Oppure usa:
    
    SELECT * FROM T1
    WHERE IIF(IsNull(Forms!NomeForm!Nomecontrollo);'*';Forms!NomeForm!Nomecontrollo.... ecc...
    
    Questo per non ottenere nulla quando non tutti i CRITERI sono soddisfatti...
    La tecnicanin questione va bene se il.critrrio è uno massimo 2...ma basta analizzare con lo showplan i piani di esecuzione per vedere che viene rieseguta la query più volte al fine di soddisfare le Variabili condizionali... ne consegue lentezza...

    Tralascio.ovviamentr la questione del SELECT * che rimane tecnica ma in questo contesto credo sia una pagliuzza.

    Tenere aperto un rs sicuramente è una cosa da sapere e da fare...
    In tutti i casi non ho ben chiaro se lavori in rete LAN... lascio stare il gprs...

    Tieninsempre presente che Access o meglio JET non è fatto per lavorare in lan figurati se lo sviluppo include errori strutturali sostanziali.
    Certamente se la latenza si avverte anche aprendo il BE in Filesharing potrebbe essere ci siano problemi di infrastruttura...

    Fai un check di tutto, ma a prescindere le cose che ti ho esposto sono un MUST non un di più...
  • Re: Lentezza tabelle collegate

    Ciao, non ho creato relazion tra le tabelle all'inizio perchè non sapevo bene che vantaggi ne avrei avuto. In queste settimane provvederò a creare i collegamenti delle tabelle più frequenti e stabili come struttura.
    Ok ho capito, la normalizzazione la conosco, non conoscevo il gergo M.
    Non ho mai inserito query con riferimenti ai controlli. Di solito ho uno o due criteri, non di più, ma sono query classiche quasi mai con asterischi.
    Ogni tanto uso gli asterischi scrivendo le query come stringhe nel VBA per semplificarmi la scrittura.
    Ho sempre cercato di costruire maschere molto semplici per fortuna solo alcune sono molto complesse, con tanto VBA (tanto per me ).
    Alla fine da casa la situazione non è così drammatica ed ho scoperto che telecom deve venire a cambiare il suo router in ufficio, quindi deduco che in parte ho avuto problemi di linea.
    In ogni caso effettuerò tutti i cambiamento che mi consigli.
    Grazie mille come sempre della tua disponibilità!!!
Devi accedere o registrarti per scrivere nel forum
6 risposte