Avatar billede pepsi2 Nybegynder
05. september 2005 - 13:01 Der er 20 kommentarer og
3 løsninger

langsom database efter opdeling

Hej eksperter

Jeg har lavet en database, som jeg sluttede af med at opdele i en frontend og en backend via den indbyggede guide. Backenden ligger på en server, og der ligger en lokal frontend på hver pc. Men problemet er, at den er blevet utrolig langsom efter dette. Både når man skal åbne div. formularer og rapporter, men også hvis man vil ændre en formular, og man f.eks. skal gemme den i designvisning. Når jeg åbner den gamle database, hvor både tabeller og formularer ligger i, kører den som man kan forvente.
Bør jeg bruge en database hvor alt ligger i, eller bare leve med de lidt langsomme svartider. Eller det optimale, er der en der kan fortælle mig, hvorfor min database kører så langsomt?
Avatar billede arne_v Ekspert
05. september 2005 - 13:05 #1
Den burde ikke køre mærkbart langsommere ved at blive splittet.

Men er du skiftet fra:

app & data MDB / lokal disk

til:

app MDB / lokal disk + data MDB / net drev

?

fordi net drev er notorisk langsommere end lokale diske !

Måske kan din tabel struktur optimeres med index ??
Avatar billede pepsi2 Nybegynder
05. september 2005 - 13:15 #2
nej, databasen har hele tiden ligget på en anden computer. Jeg har så opdelt den, og smidt en lokal frontend ud på hver computer. Men det der undrer mig mest, er at en ting som at gemme en formular, efter man har ændret noget i designvisning, godt kan tage en 15-20 sek., mens det ikke engang tager et sekund, i den gamle db, med tabeller i.
Avatar billede arne_v Ekspert
05. september 2005 - 13:25 #3
hm - der tror jeg at du skal vente på at en mere Access frontend kyndig end mig
kigger forbi
Avatar billede flemming39 Nybegynder
05. september 2005 - 13:58 #4
Jeg er heller ikke frontend ekspert men det går uden tvivl langsommere når du skal over netværket (lokal pc -> server).

Kan du ikke ligge både frontend og backend på server og lave en genvej fra den lokale pc, så er mit gæt at du opnår samme hastighed som tidligere.
Avatar billede pepsi2 Nybegynder
05. september 2005 - 14:05 #5
det har jeg prøvet, og det er desværre med samme resultat.
Avatar billede terry Ekspert
05. september 2005 - 14:07 #6
The best configuration is to have the frontend on your local PC and the backend on the server.

Loading the frontend from your local PC should be faster than dragging it over the network first. There may be a slight overhead dragging the data over the network too, but if your database is designed correctly with indexes on the fields you use for searching, then it shouldnt be so bad.

When in design mode Access needs to verify that the changes you make in the frontend comply with the data in the backend, so again this is going to take longer, but when in normal mode it should not be a problem.
Avatar billede pepsi2 Nybegynder
05. september 2005 - 14:13 #7
hej terry.
Jeg har det også som du har beskrevet, med en frontend på hver pc. Men eksempelvis, tager det ca. 1-2 sekunder at åbne en formular i den "gamle" db, hvor alt, inkl. tabeller er i. Mens i den opdelte, tager det ca. 6-8 sekunder.
Avatar billede terry Ekspert
05. september 2005 - 14:37 #8
Avatar billede pepsi2 Nybegynder
05. september 2005 - 15:28 #9
hvor stor indflydelse bør det have, at der er flere brugere på databasen. For hvis der kun er en bruger på databasen, kører det nogenlunde, men når der er 3-4-5 brugere på, begynder det at tage lidt over 5 sekunder at åbne en formular.
Det skal også lige tilføjes, at jeg fint kan åbne en ubundet formular.
Avatar billede terry Ekspert
05. september 2005 - 16:43 #10
it shouldnt have much influence at all.
Avatar billede terry Ekspert
05. september 2005 - 16:56 #11
did you look at this link?
http://www.microsoft.com/office/previous/xp/columns/column05.asp

Look at the question
"Why is Access 2000 slow for more than one user?"
Avatar billede Slettet bruger
06. september 2005 - 09:03 #12
Jeg har haft lignende problemer med hastighed eller mangel på samme. Løsningen lå i forespørgslerne, hvis du har mange forespørgsler og der er forespørgsler på forespørgsler, så sørg for at du afgrænser først og laver beregningerne på den afgrænsede datamængde. Jeg havde selv en responstid på omkring 9 sek. i noget, som lignede en god db, men efter omlægning af forespørgslerne kom jeg ned på 1 sek.

Held og lykke!~)
Avatar billede pepsi2 Nybegynder
06. september 2005 - 09:44 #13
Terry-Det ser meget lovende ud. Det prøver jeg lige og teste, og vender tilbage med et svar.

spg-Det tror jeg desværre ikke det er, da jeg ikke har forespørgsler på forespørgsler, men ellers tak for tippet :)
Avatar billede Slettet bruger
06. september 2005 - 12:28 #14
Helt ok...

Ja, Terry det er et superlink!~)
Avatar billede flemming39 Nybegynder
06. september 2005 - 12:56 #15
Tak for et godt link Terry!
Glæder mig specielt til at prøve om det giver bedre performance at oprette en kontinuerlig forbindelse fra alle frontends til backenden.
Avatar billede jesperfjoelner Nybegynder
06. september 2005 - 20:37 #16
Det her er en af de bedste oversigt over hvordan man forbedrer performance i en multiuser database
http://www.granite.ab.ca/access/performancefaq.htm
Der er adskillige forslag.
Avatar billede Slettet bruger
06. september 2005 - 23:14 #17
Jeg har konstateret en betydelig reduktion i performance på opdelte databaser, og har fundet ud af, at kombobokse er synderen. Hvis du bruger en kombobox til at hente data til én tabel fra en anden, og første kolonne er sat til 0 cm, giver det problemer. Dette scenarie gælder hvis du fx. i en ordrelinietabel vil hente et produktnr via en kombobox, der viser produktteksten men gemmer produktnummeret i ordrelinietabellen. Hvis du i stedet viser og gemmer produktnummeret (eller produktteksten) stiger performance på formularen betydeligt. Tjek dine kombobokse !!
Avatar billede pepsi2 Nybegynder
07. september 2005 - 10:09 #18
jesperfjoelner-Super link. Indeholder lige lidt mere end terrys. Bl.a. at brugen af Dcount nedsætter performance. Det har også været det, der har været tilfælde i min database. Efter jeg har udkommenteret Dcount sætningen, tager det 3-4 sekunder hurtigere at åbne en formular.

schlamovitz-Tak for tippet, men som sagt var det Dcount der var synderen i mit tilfælde.

Et lille tillægsspørgsmål. Hvordan er den bedste måde at tælle antal poster så, hvis man ikke kan bruge Dcount?
Avatar billede terry Ekspert
07. september 2005 - 10:26 #19
Ref: "Et lille tillægsspørgsmål"

SELECT count(*) FROM YourTable WHERE.....
Avatar billede pepsi2 Nybegynder
07. september 2005 - 11:09 #20
Terry, tak for hjælpen.
Selvom jesperfjoelner kom med det link, der havde den reelle løsning på mit problem, har jeg fået så mange gode input og tips, der har optimeret min database på mange andre måder. Så hvis i alle dem der er kommet med tips og gode ideer lige smider et svar, tilføjer jeg lidt ekstra point, som jeg så vil dele ud.
Tak for hjælpen allesammen
Avatar billede jesperfjoelner Nybegynder
07. september 2005 - 13:42 #21
pepsi > godt det hjalp.
Jeg har ikke selv forsøgt, men det forlyder at disse erstatninger for Dcount/Dlookup m.fl. er hurtigere:
http://www.mvps.org/access/modules/mdl0012.htm
Avatar billede terry Ekspert
07. september 2005 - 14:11 #22
:o)
Avatar billede Slettet bruger
07. september 2005 - 15:05 #23
:-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester