Newsgroup: it.comp.appl.access
Titolo: Access e' piu' lento se chiamato da un server remoto. Perche' ?

Domanda teorica e'.
1)
Ho diviso l' applicazione dai dati.
2)
Ogni client chiama l' applicazione dal server.
3)
Una volta che l' applicazione risiede nella
RAM della macchina client, gli accessi ai
dati (read e write) li fa solo sul C:\ della
macchina ospitante.
Eppure constato che l' applicazione e'
*leggermente* piu' lenta rispetto al caso
in cui sia richiamata dal C:\ della macchina
locale.
OVVIAMENTE non parlo della fase in cui
l' applicazione e' caricata, che e' certo piu'
lenta. No. Parlo del funzionamento successivo,
come per esempio i tempi di apertura delle
maschere.
Sospetto che l' Access NON carichi tutta la
applicazione, ma usi qualche algoritmo interno
di ottimizzazione che fa si che gli oggetti
della applicazione vengano a risiedere in RAM
solo quando sono effettivamente richiamati.
Voi che ne pensate ?

 Voi che ne pensate ?
Bisognerebbe dissassemblarlo e andarsi a vedere come
fa a caricarsi in memoria, quel bastardo.
Mo quasi quasi mi ci metto, voi vede' ?


La cosa appare piu' difficile del previsto ... :-)))

 solo quando sono effettivamente richiamati.
Ma sant'iddio radica', ma ti pare possibile che il sistema si carichi 
tutta la applicazione sul sistema locale per essere pronto, non si sa 
quando, ad aprire un form che magari sta li' perche' e' "garbage".
Sarebbe come dire in un database che il sistema client si carica *tutto* 
il database perche', chissa' quando, tu potresti fare una query che 
richiede un ***** di record messo in chissa' quale tabella?
-- 
ac (x=y-1)

 quando, ad aprire un form che magari sta li' perche' e' "garbage".
Ok ok ... Va bene. Non t' arrabbiare.
E' che pensavo che le maschere, essendo oggetti leggeri
il sistema se le caricasse tutte.
le mie poi sono del tutto e *maniacalmente* prive di codice,
hanno solo chiamate di funzioni che stanno in moduli.
Ma allora, le funzioni che stanno nei moduli, anche quelle
vengono richiamate a richiesta ?
Non si puo' fare in modo da forzare il sistema a caricarsi
tutto ?

 tutto ?
Potrei ad esempio aprirle tutte (ma paraculamente
invisibili) all' avvio, e poi renderle solo visibili quando
l' utente le chiama. Velocizzando ANCOR DI PIU'
la loro apparizione.
Pero' poi devo fare in modo da intercettare
l' evento chiusura, bloccarlo e renderla di nuovo
aperta ma solo invisibile.
Tanto saranno una ... quindicina di maschere,
non e' tutta sta roba. E leggere per giunta.
Come la vedi ? Na cazzata ?

 ac (x=y-1)
Se parli complicato... dai scendi dal predellino... e spiega la cosa
come potrebbe capirla anche un bambino... quelli con il cromosoma 21
alterato però...
@Alex


Radicaaaaaaaaaaaaaaaaaaaaaaaaale la conosci la legge di conservazione 
della energia? Applicala! Quanto ci metti ad aprire *tutte* le form?
La leggerezza dell'essere era un'altra cosa. Qui ci sono gli elefanti 
con passo di due quintali di majakovskiana memoria.
Come la vedo? 'Na cazzata?
-- 
ac (x=y-1)

radicale 004 ha scritto:

In che senso più lenta? Non centra niente dove hai messo il codice (moduli o
maschere), mi sa che ti stai riferendo al 'reperimento' dei dati....Il client
deve eseguire delle query per aprire la maschera, ed essendo l'mdb un file
sharing si deve caricare tutti gli indici in locale E POI eseguire la query E
POI poi mostrarti la form. Ecco la lentezza. Lascia perdere disassemblamenti
vari. Ci sono tante accortezze per fare andare meglio gli mdb in rete, ma i
loro limiti strutturali rimangono....
-- 

 Come la vedo? 'Na cazzata?
Lo so, c' hai tutte le ragioni di questo mondo.
Pero' immagina che ad un certo momento cade la connessione al
server.
In teoria, se fosse vero (come e' vero) che l' Access non carica in
RAM tutti gli oggetti al momento della apertura della applicazione,
l' applicazione dovrebbe smettere di funzionare, o dare errore,
nel momento in cui l' utente tenta di aprire una maschera che
e' ancora soltanto sul server, in quanto non sarebbe accedibile.
Giusto ?
Devo fare un esperimento : carico l' applicazione, poi tolgo
la parte server (da un altro pc) e poi tento di caricare tutte le
maschere una ad una.
E vedo che succede. Che ne pensi ?

 alterato però...
Certo che te diverti co' poco, eh ? ;-)

 maschere), mi sa che ti stai riferendo al 'reperimento' dei dati....
No, e' quello il bello ! :-)
I dati non c' entrano nulla.
Ascolta :
tu hai due applicazione IDENTICHE, contenenti solo software,
L (locale) e R (remoto)
1)
L ed R attingono alla stessa IDENTICA fonte dati : tabelle access
che si trovano sul C:\ (nello stesso identico punto) della macchina
sopra la quale gira la applicazione (L od R).
2)
La L risiede nel disco C:\, la R su una macchina remota.
3)
Ovviamente, se chiami la R dalla tua macchina, ci vorra'
molto piu' tempo di quello necessario ad aprire la L.
MA UNA VOLTA CHIAMATA E CARICATA IN RAM,
la L e la R dovrebbero avere gli stessi identici tempi
di risposta, in tutto e per tutto :
- i dati li hanno nello stesso punto.
- L ed R sono identiche.
Dunque ...
Invece :
La R risultera' leggermente piu' lenta nelle sue * attivita' *
(come per esempio il tempo che ci vuole per aprire una
maschera e mostrarla a video) che la L.
Perche' ? Perche' giustamente come dice Alessandro
la R NON carica SUBITO tutti i propri oggetti in RAM,
ma lascia quelli non utilizzati sul server.
Allora a questo punto faro' un esperimento :
carico la R e poi sposto l' applicazione sul server.
Dovrebbe verificarsi un crash.

radicale 001 ha scritto:

Allora.
Pc1 con 1.mdb
Pc2 con 2.mdb 
Parliamo solo di FE, quindi le tabella (tab.mdb) sono da un'altra parte.
Facciamo finta che Pc1 contenga 1.mdb e tab.mdb ok?
Bene. 1.mdb e 2.mdb dovranno pure accedere a sto tab per mostrarti una
maschera? O hai fatto le prove su 2 pc IDENTICI come prestazioni e lanciando
maschere non associare (quindi niente dati)?? Se mi dici che Access nn carica
l'intera applicazione in RAM qua ci sta (se lo facesse sarei nei GUAI
davvero...vista la mole di form, query, report e moduli!), ma allora
rilanciando 2 volte la stessa form i tempi dovrebbero diminuire drasticamente
no? Nn ho capito francamente cosa vuoi dire.....il db remoto è per forza di
cose + lento del locale......anche se sono tutti e due collegati ad una base
dati comune (e intendo ovviamente mdb). Ho capito male?
-- 

 diminuire drasticamente no?
Non lo so, credo di si : dipende da come e' organizzato
internamente  Access. Devo fare degli esperimenti, ma una cosa
e' sicura : Se stacco il cavo di rete e sto facendo girare la
applicazione avendola chiamata dal remoto, addio.
Ma quale errore dara' ? Mistero.
Devo sperimentare domani.
Grazie per l' attenzione. :-))

 applicazione avendola chiamata dal remoto, addio.
Mi corre obbligo ricordarti che access e' un "ambiente".
Ma secondo te quello che vedi nel pannello di database e' tutto quello 
che c'e'? Banalmente quello che va sotto il nome di "catalogo" per tutti 
i DBMS ha una sua funzione o sta li solo come ciarpame aggiuntivo?
-- 
ac (x=y-1)

?"radicale 001"  ha scritto nel messaggio 
news:09141860-f8d4-40cc...@u6g2000vbh.googlegroups.com...




___
CABUUUUUUUUUMMMMMMMMMMM
E io lo sapevo che te ne uscivi con un software SCRITTO DA TE che oltre 
oltre a tradurre il PCODE, disassembla addirittura Access...
E poi c'è pure chi ti difende..
MA

?"radicale 001"  ha scritto nel messaggio 
news:39dc1cf3-c1e8-4de9...@k38g2000vbn.googlegroups.com...


__
Questa è provocazione pura, sai che ci accaloriamo per continue cazzate che 
dici...
MA

?"radicale 001"  ha scritto nel messaggio 
news:17117b6e-8906-4932...@q14g2000vbf.googlegroups.com...

(omissis)






___
GENIO!!!!!
A parte il fatto che fai una cazzata a non lasciare in locale gli oggetti 
che non siano le tabelle... e questo č uno!!!
ma poi
GENIO!!!!!
se interrompi il collegamento col server i dati dove li metti????? da dove 
li prendi???
io ho mdb di 800 GB, mi porto tutti i dati in locale??? che mi frega, li uso 
o no, intanto ce li ho sulla mia postazione.
Poi se aggiorno qualcosa li salvo da me e quando mi decido un giorno a 
ripristinare il collegamento al server li aggiorno anche lě...
No, ma tu hai fatto un corso per essere cosě, non credo sia un talento 
naturale!!
MA

 diminuire drasticamente no?
Non lo so, credo di si : dipende da come e' organizzato
internamente  Access. Devo fare degli esperimenti, ma una cosa
e' sicura : Se stacco il cavo di rete e sto facendo girare la
applicazione avendola chiamata dal remoto, addio.
Ma quale errore dara' ? Mistero.
Devo sperimentare domani.
Grazie per l' attenzione. :-))
___
Madonna mi cadono le braccia...
MA

 Madonna mi cadono le braccia...
Riattaccatele, e usa il cervello.


wrote:

Certamente, ma quelli che citi sono pur sempre dati.
Non pensavo che l ' access facesse uno swap in memoria
anche delle maschere : mi devo ricredere.


OK. Ti riduco il QI di almeno un punticino.
Dove diavolo ho scritto di swap di memoria?
Tutto e' *dati* compreso il codice da eseguire.
Gia' ho qualche perplessita' sull'architettura che hai disegnato.
Invece di *rispettare* gli oggetti tu che fai (hai fatto) sei ritornato 
alla programmazione procedurale inseguendo una fantomatica *leggerezza* 
(di cosa non l'ho capito). Ma le hai mai viste le forms VB? Il 90% del 
codice riferisce alla definizione dei controlli, pensi che in access sia 
diverso? E comunque il *peso* del codice e' assolutamente ininfluente 
rispetto alle operazioni di I/O. Operaioni di I/O con rs connessi o 
disconnessi che *devi* comunque fare non e' che "nascondendo la polvere 
sotto al tappeto" si faccia gran pulizia o si risparmi in termini di tempo.
Poi, come affermava un personaggio di Heinlein (il Grande Lorenzo) 
"anyone is entitled to choice fashion and time of is own destruction"
-- 
ac (x=y-1)

 Riattaccatele, e usa il cervello.
Ho capito!!!
Quello che ti ha detto "di fronte ad una persona che non capisce ce
n'è un'altra che non sa spiegarsi" parlava in arabo!
Popi

 Madonna mi cadono le braccia...
Riattaccatele, e usa il cervello.
___Risposta:
E tu please non offendere la nostra intelligenza e racconta meno palle!!!
Guarda che se tenti di farti strada con le offese, ne fai pochina qui.. non 
è che se dici che non uso il cervello, io mi offendo...
io normalmente lo uso in maniera direttamente proporzionale a quanto ne 
richiede l'interlocutore...
MA

 rispetto alle operazioni di I/O.
E HO CAPITO !
Ma se tu le funzioni le scrivi *dentro* le maschere, converrai
che se l' applicazione e' complessa le maschere si appesantiscono
un BEL PO', o no ? Eccheccax !

 Cioè X e Y sono due copie identiche dello stesso sw?!?!?!
Cazzarola ! M' e' saltato l' apice !  Chiedo scusa : X' e Y'
sono le applicazioni, X ed Y sono le macchine.
X' sta su X , Y' su Y.
Mo' tutto chiaro ?

"radicale 004"  ha scritto nel messaggio 
news:176bd3e0-ed10-420a...@p11g2000vbq.googlegroups.com...




Mo' tutto chiaro ?
___
E poi ero io che non capivo...
MA

 E poi ero io che non capivo...
E come incipit ci stava pure un bel "Aslema lebes!!!" (1).
Popi
(1) Buongiorno!!!

 E tu please non offendere la nostra intelligenza e racconta meno palle!!!
Ma non sto' a racconta' palle !

 E tu please non offendere la nostra intelligenza e racconta meno palle!!!
Ma non sto' a racconta' palle !
___________Risposta:
vero come è vero che sai usare Access
MA

 tu non avevi detto che separavi dati e codice???
Eh ! Embe' ?
Il codice sta una volta nel pc locale, un' altra volta
nel pc remoto. So DUE !!! I dati invece stanno sempre sul
pc locale. Ndo' sta er problema ? Boh.
(omissis)
Lassamo perde.

 pure pure ...
Capirai che gnocca .... (1)
Popi
(1) E' la legge del trombino: io vado con Carole Alt.

 tu non avevi detto che separavi dati e codice???
Eh ! Embe' ?
Il codice sta una volta nel pc locale, un' altra volta
nel pc remoto. So DUE !!! I dati invece stanno sempre sul
pc locale. Ndo' sta er problema ? Boh.
___________Risposta:
Eccoti a briscola.
Si dice a Napoli: U' purp se coce int' all'acqua soja...
Tu non hai assolutamente idea di quello che scrivi.
Dividere dati e codice ha senso se i dati sono in remoto ed il codice in 
locale: il contrario è una CAZZATA di proporzioni bibliche, non ha 
assolutamente senso ed il fatto che li confondi testimonia che in realtà non 
lo fai...
(omissis)
Lassamo perde.
___________Risposta:
Oh vedi che ogni tanto una cosa buona la dici?
MA

 lo fai...
No, non e' possibile. Non ci posso credere.
Concentrati :
Io ho una applicazione, e la chiamo A.
Questa applicazione gira dentro un mdb, quindi possiamo
chiamare A anche questo mdb. E' scritta in VBA e si
connette ai dati esclusivamente tramite ADO.
Ogni utente ha la sua A, sul suo pc.
Ma i dati dove stanno ? Su un server.
Ma quando l' applicazione si apre, li acchiappa e
se li carica in locale. Dopodiche' lavora con quelli,
e al server ci accede solo quando inserisce, modifica
e cancella (IMC) : queste operazioni sono sempre DOPPIE,
cioe'  le IMC vengono fatte sui dati locali E sui dati
server, per mantenerli allineati.
Se l' utente vuole vedere le IMC degli altri utenti, ci sono
funzioni che glieli aggiornano a richiesta.
Mi segui ?
Ora ho pensato :
e se A la mettessi anch' essa sul server ?
L' utente, invece di averla sul suo pc, c' ha solo una
icona (ovvero un puntatore, a ben vedere) che CHIAMA
la A prendendola dal server. In questo modo ogni volta
che faccio cambiamenti, TUTTI le avrebbero senza
che gli reinstallo l' applicazione.
Dopodiche' tutto si riconduce al caso precedente.
Hai capito, capoccione mio ? :-)
Un abbraccio.
Questi dati si trovano sul C:\ del pc A ', in un mdb
diverso da quello che contiene A.
Ok ?
Ora, chiudi gli occhietti e pensa :
Dove sta scritto che questa A debba stare nel
medesimo pc sul quale si trovano i dati, ovvero
A ' ?
Potrebbe starci, se ad esempio io la distribuissi
agli utenti in modo che ognuno abbia una copia.
Attento : quando l' utente apre l' applicazione,
i dati vengono caricati da server a locale.

 Io gli dissi : oddio che e' sta robba ?
No ... Me sa che l' ho cacciato fuori io
smanettando furiosamente col VB, e non
col VBA. Qualche "movimento inconsulto"
alla fine e' uscito fuori sto "coso".
Al che ho chiamato il capo, e lui m' ha
spiegato che quello era il p-code.
Si, me pare che e' andata cosi ...

"radicale 004"  ha scritto nel messaggio 
news:5ef576b3-fa5f-4856...@u12g2000vbf.googlegroups.com...





___
Ah Radica' e su, sii serio!!!!
Ti stai ad intorcinare...
da VB non puoi leggere il pcode di un db.
Anche perchè, stavolta seguimi tu,
da VB ti colleghi alle tabelle di Access non ad un db.
Il pcode è generato in un MDE, se cerchi di creare un mde da un mdb con sole 
le tabelle ti ridono in faccia
Stammi a sentire, non sai neanche di cosa stai parlando
Tra l'altro fai casino tra VBA e VB e chissà cosa
MA

 wrote:
(omissis)
Te dico che ce l' avevo davanti ar grugno.
Sara' stato una 15 anni fa, c'era il capo
(uno che je fumavano i cojoni) che non so
come l' aveva cacciato fora, sto p-code.
Io gli dissi : oddio che e' sta robba ?
E lui m' ha spiegato bla' bla' bla'. Qualcosa
ho capito, ma chi si ricorda ?
Lui lo leggeva come fossero i promessi
sposi.
Programmavamo in Clipper su rete Novell,
tempi lontani, ormai.
Credimi, non te sto a di bugie.
______________Risposta:
Adesso sono 15 anni fa e non sai neanche come l'hai fatto,
ma per fare lo sborone, l'altro giorno dicevi che l'avresti fatto a volo a 
volo...
e dai, rinuncia a continuare a dire fesserie..







Un abbraccio.
______________Risposta:
Ma leggi quello che scrivi?
Tu hai A con le tabelle sul PC "server"
da perfetto genio, prendi i dati e li metti sul db B che sta sempre sul 
server.
....
....
....
Dici: cosě č disponibile a tutti
....
....
Ma anche A era disponibile a tutti
....
....
ma allora perchč passo i dati a B???
e poi crei un'applicazione sul server, cosě tutti accedono a quel Front End 
in rete...
e quindi oltre ai dati, fai passare tutta l'applicazione... e se va in crash 
(cosa moooooooooooolto probabile)
l'istanza letta da un utente della rete, tutti gli altri vanno in crash...
Ah radica', dacci tregua....
MA


 da VB non puoi leggere il pcode di un db.
Ma quale stracazzo  de db ?
Ma chi ha mai parlato de DB ?
Lo vedi come fai ?

 server.
Niente. Non capisci. Io ce rinuncio.
Stamme bene.

"radicale 004"  ha scritto nel messaggio 
news:f84fba7c-fa2d-41aa...@u14g2000vbg.googlegroups.com...




_________Risposta:
Ovvio Access è un file di testo, mica un db, per amor di Dio...
Una domanda, il pcode sta nel file o nell'applicazione?
Non girarci intorno, rispondi e se sei onesto non googolare prima
MA

 server.
Niente. Non capisci. Io ce rinuncio.
Stamme bene.
_________Risposta:
Aridaje... o ti spieghi male???
O copri le cazzate che dici??
Sii superiore spiegalo come ad un bimbo di 2 anni
MA

 adesso che ho piu' nozioni forse ci capirei di piu'."
Appunto.
Sparisci.

 adesso che ho piu' nozioni forse ci capirei di piu'."
Appunto.
Sparisci.
________Risposta:
Ok, ora che me l'hai ordinato lo faccio
MA

 vedi? leggo e scrivo facile
Tu dici che :
coglione
radicale001
radicale002
radicale003
radicale004
"puntano" sempre al sottoscritto ?
Atch. Me ne faro' una ragione.
Soffro molto, ma me ne faro' una ragione : il tempo
cura tutte le ferite.

 naturale!!
Non hai capito un TUBO. :-))
Hai presente ?  Sei un grande.


l'idiota scrisse un sacco di idioze
SKIPPED
Antonio