Con SQL server sicuramente � tutto + veloce (e sicuro) con alcuni SE (server
dedicato, buone schede di rete, buona struttura dell'accesso ai dati...). Ma
in teoria Access lavora molto bene con 2/3 utenti....In cosa noti la lentezza?
Apertura maschere? Accesso ai record? Rialleghi le tabelle ad ogni avvio?
Utilizzi qualcosa per forzare l'apertura dell'mdb BE da parte dell'FE? Le
concorrenze? Dicci qualcosa di +!!!!!
--
Questo articolo e` stato inviato dal sito web http://www.nonsolonews.it
>Volevo sapere se istallando sul pc delle tabelle sql server o mysql la
>gestione era pi� veloce
Dipende da come hai sviluppato l'mdb.
Di solito i problemi cui fai riferimento si risolvono con pochi
accorgimenti, qui trovi indicazioni utili:
http://www.granite.ab.ca/access/performancefaq.htm
E in particolare:
LDB locking which a persistent recordset connection fixes
Saluti di fine anno.
qui c'� gente molto pi� scafata di me, ma nel mio piccolo ti dico come ho
risolto io.
Riallego ad ogni avvio tutte le tabelle (2 mdb come BE)
Forzo, tramite tabelle dummy, la persistenza dell'ldb (come ti consiglia
Massimigliano Bertoglio)
Utilizzo un mdb di appoggio (locale) per la visualizzazione dei recordset di
grandi dimensioni (in sola lettura). Mi evita ogni tipo di problemi di
concorrenza sullo stesso set di record
Tutte le form sono in sola lettura. Utilizzo altre form per modifiche e
inserimenti (di solito non associate)
Se la form � estremamente pesante, popolo combo e similari sulla loro
attivazione
Gestisco la multiutenza impostando il blocco a livello di record (modificati
)se form associate o gestendo gli errori per le concorrenze (soprattutto il
3218 e 3022) per form non associate (uso QUASI esclusivamente queste ultime)
Indicizzo ogni campo su cui posso fare le ricerche (access se pu�, pur essendo
un file-sharing e non un client-server, importa sul client solo la tabella
degli indici). Rallenta in fase di scrittura, ma dipende dall'utilizzo.....
Cerco di fare le procedure sempre step-by-step per non attendere troppo e dare
la possibilit� di annullare tutto (chiaro che a volte non si pu�...)
Uso una marea di Public Function per le operazioni comuni e ripetute, la
leggibilit�, ottimizzazione e velocit� di esecuzione del codice
Chiaro che alcune operazioni (ricerche con * davanti che manda a ramengo gli
indici e opta per il table scan, operazioni di scelta tra tabelle-query in
join multipli e cose cos�) hanno un costo prestazionale, tutto st� a renderle
il + performanti possibili (magari in 2/3 step tipo 'ora ti faccio vedere
questo, se hai bisogno allora anche quest'altro'...) ed avvisare cmq l'utente
che quella particolare operazione impiega parecchio tempo (se no comincia a
pestare come un matto sulla tastiera e dire 'Ecco...e adesso non funziona +
niente!!!!!@#]#@#...!!!'
Se ti pu� essere d'aiuto.....
>
> qui c'ᅵ gente molto piᅵ scafata di me, ma nel mio piccolo ti dico come ho
> risolto io.
> Riallego ad ogni avvio tutte le tabelle (2 mdb come BE)
> Forzo, tramite tabelle dummy, la persistenza dell'ldb (come ti consiglia
> Massimigliano Bertoglio)
> Utilizzo un mdb di appoggio (locale) per la visualizzazione dei recordset di
> grandi dimensioni (in sola lettura). Mi evita ogni tipo di problemi di
> concorrenza sullo stesso set di record
> Tutte le form sono in sola lettura. Utilizzo altre form per modifiche e
> inserimenti (di solito non associate)
> Se la form ᅵ estremamente pesante, popolo combo e similari sulla loro
> attivazione
> Gestisco la multiutenza impostando il blocco a livello di record (modificati
> )se form associate o gestendo gli errori per le concorrenze (soprattutto il
> 3218 e 3022) per form non associate (uso QUASI esclusivamente queste ultime)
> Indicizzo ogni campo su cui posso fare le ricerche (access se puᅵ, pur essendo
> un file-sharing e non un client-server, importa sul client solo la tabella
> degli indici). Rallenta in fase di scrittura, ma dipende dall'utilizzo.....
> Cerco di fare le procedure sempre step-by-step per non attendere troppo e dare
> la possibilitᅵ di annullare tutto (chiaro che a volte non si puᅵ...)
> Uso una marea di Public Function per le operazioni comuni e ripetute, la
> leggibilitᅵ, ottimizzazione e velocitᅵ di esecuzione del codice
>
> Chiaro che alcune operazioni (ricerche con * davanti che manda a ramengo gli
> indici e opta per il table scan, operazioni di scelta tra tabelle-query in
> join multipli e cose cosᅵ) hanno un costo prestazionale, tutto stᅵ a renderle
> il + performanti possibili (magari in 2/3 step tipo 'ora ti faccio vedere
> questo, se hai bisogno allora anche quest'altro'...) ed avvisare cmq l'utente
> che quella particolare operazione impiega parecchio tempo (se no comincia a
> pestare come un matto sulla tastiera e dire 'Ecco...e adesso non funziona +
> niente!!!!!@#]#@#...!!!'
>
>
la mia struttura � cos� formata: 2 mdb diciamo 'server' e 1 mdb locale. Il
locale � composta solo da tabelle vuote e ce ne 1 per ogni client. Per
riallegare i vari BE ho una tabella (in quello locale) che annota i percorsi
relativi (tipo /CartellaApplicativo/NomeApplicativo) e un codice
(locale/server).Sul server ho 1 tabella x mdb vuota, alla quale mi collego per
primo e apro un recordset (in una maschera di avvio nascosta). Questo
recordset non viene mai chiuso se non alla chiusura dell'applicativo stesso
(la maschera nascosta � l'ultima a chiudersi e mi serve anche per non far
chiudere l'applicazione dalla crocetta rossa). Il db di appoggio mi serve
invece per scrivere fisicamente i record da visualizzare (SENZA relazioni,
tabelle piatte) o per fare operazioni locali (ordini, analisi di dati,
ricerche, tutte cose per cui non ha senso appesantire il server o rallentare
gli atri utenti). Magari anche tutta la reportistica....Il senso � questo:
devo fare una ricerca su una tabella molto grossa e un tot di join. Se faccio
una select, � ancora il server a gestire tutto. La fanno anche altri 2 utenti
e l'mdb-server va in crisi (una per tutto la navigazione tra i record....). Io
faccio una INSERT con tutti i join che mi servono nella tab locale (SOLA
LETTURA). Ora ho il mio set di record li sul mio pc, posso tenerli li anche
tutto il giorno, non causo problemi a nessuno. In + aggiungo sempre anche 1
boolean x selezionare i record (uso sempre maschere continue). La velocit� di
esecuzione della INSERT da me � molto + veloce di una SELECT multiutenza.
Ovvio che con SQL server non hai bisogno di tutti questi orpelli, ma con mdb
si......
Se hai altri dubbi chiedi pure!!!!!!
>>
>anche io uso tabelle locali temporanee per l'inserimento dati e le
>carico dal server quando devo richiamare un record ed � qui che rallenta
>molto le tabelle nel server sono molte, credo che dovr� studiarmi l'sql
>server per velocizzare il flusso di dati. Ti ringrazio
Io parlo solo della visualizzazione...per l'inserimento uso solo form non
associate, cos� controllo l'input e poi faccio INSERT magari incapsulata in
una transazione. Se passi a SQL server e utilizzi ODBC all'inizio puoi 'quasi'
lasciare intatta la scrittura del FE (a parte alcune necessita, vedi il sito
di @Alex). Poi pian pianino lo converti totalmente (xch� a quel punto dovresti
centralizzare tutto sul motore db del server: migliori prestazioni, miglior
manutenzione, FE leggerissomo)