Tudo o que eu precisava de saber eu aprendi no jardim de infância, certo? Bem, eu costumava pensar que sim, e costumava ser um "pretty gosh darn good sharer", até que de repente eu estava a utilizar a replicação do Jet e descobri que algumas vezes ser um bom partilhador poder ser uma coisa má para a velocidade da tua aplicação. O que é que eu quero dizer? Bem, vai lendo...
O cenário é bastante simples--tu tens uma aplicação que está a funcionar correctamente, efectuas a sua replicação, e subitamente, todas as vezes que fazes algo simples como abrir uma tabela, a velocidade torna-se abismal... Algumas vezes gira o drive de disquetes ou o CDROM. Estás pronto para arrancar os cabelos, ou (se não tiveres cabelo) pronto para des-replicar a base de dados, se não conseguires que páre de o fazer!
Bem, a resposta é simples.... despartilha os teus discos!
Sim, está certo. Devido a maneira como o Microsoft Jet's replication tracking layer gere a informação se as seguintes são ou não são
\\MACHINE\C$\foo.mdb
\\MACHINE\CROOT\foo.mdb
C:\foo.mdb
H:\foo.mdb (<--mapeado para um dos directórios UNC acima)
na realidade as mesmas réplicas, ele faz algum trabalho (alguns podem até dizer demasiado!) para tornar não ambíguo as informações acerca das partilhas na máquina de forma a poder saber o que são todas as partilhas. Infelizmente, devido à maneira como o Access implementa alguns dos *seus* trabalhos e de como chama o Jet para os fazer, esta "detecção" pode acontecer muito mais vezes do que aquelas que poderias querer. :-(
Para conecções partilhadas que vão a outras máquinas, especialmente se as outras máquinas não estão disponíveis, a chamada interna que efectua as funções WNet* podem ter um impacto na velocidade. Para partilhas locais, esse impacto não é assim tão mau, a não ser que estejas a partilhar um CDROM ou uma drive de disquetes, nestes casos o impacto na velocidade é outra vez de considerável e pode até ser bastante incómodo.
Então como podes combater este problema? Sempre que possível numa máquina que esteja a utilizar uma aplicação que utilize replicação, tenta não partilhar CDROM ou drives de disquetes, e tenta evitar fazer o mapeamento de conecções através da rede, especialmente as mais lentas (utiliza em vez disso paths UNC). Isto vai prevenir que sofras o horrivel impacto na velocidade que podes estar associado a ser um bom partilhador. :-)