22. juni 2004 - 16:11Der er
8 kommentarer og 2 løsninger
Langsom database
Jeg har en database med 5 brugere over netværk. Databasen er splittet og frontend ligger på brugernes PC, med link til en fælles database på et netdrev.
Ofte opleves det at databasen er meget lang tid om at åbne en form. F.eks. fra Hovedmenuen kan det tage lang tid før Kunde-formen åbner, selv om det egentlig ikke er en kompliceret form...
Frontend databasen komprimeres automatisk ved lukning og den fælles database komprimeres jævnligt.
Hvis jeg åbner net-databasen mens en bruger er på og prøver at komprimere den får jeg besked på at den er åbnet med "udelt adgang" af den og den bruger.....
Kan jeg sikre at databasen åbnes med "delt adgang"...?
Hi Mikael By default the dB will be open in shared mode, otherwise it wouldnt be possible to have more than one user accessing it. If other users are using the dB then you will not be able to compact it. I think the error "udelt adgang" is maybe a bit mis-leading. In fact I think you are just being informed that you are not allowed to compact the dB because it is in use.
If you try opening the dB (double click) are you allowed to?
There can be many reasons why the dB is slow in opening, but do you find it faster once it is compacted? It could also be a slow network connection!
Det jeg kan se nu - efter at have eksperimenteret en del er at den form jeg åbner mest og den der anvendes mest låser alle de records den viser - og det er en del for det er en Kundeliste med et filter til sortering af kunderne. Hvis jeg åbner den på den ene maskine vil den ikke åbne på en anden maskine... og der er sat "No Locks" ud for "Record Locks" de enkelte PC'ere er også sat til "No Locks" og jeg har prøvet både med og uden "Open Databases using record-level locking"...
Jeg synes måske ikke det er den bedste løsning, men jeg kunne jo vælge at lukke Kundelisten når de klikker på knappen, der bringer dem hen til Kundens data....
Du kan også prøve at lege lidt med følgende (som på forunderligvis kan have både positiv og negativ indflydelse på performance):
-Ved sammenkædningen kan du både vælge at pege på et mapped drev eller på //server/mappe/database.mdb. Jeg har både oplevet forbedring og forværring ved at vælge det sidste.
-Prøv at lægge frontend i samme mappe som backend (jeg ved godt, at det strider mod alt hvad Microsoft anbefaler, men jeg har flere gange oplevet at performance blev væsentligt værre, efter at jeg "optimerede" en løsning ved at flytte frontend til hver arbejdsstation)
Disse 2 råd kan som sagt lige så godt forværre situationen, men måske er Jeres konfiguration ét af de få, hvor disse ændringer har gavlig virkning?
Ud over disse, er der masser af andre optimeringsmuligheder, hvis man kigger på selve databasen: -Vigtig: sæt egenskaben "Autoudfyldning" = Nej på kombobokse -Vigtig: undgå beregninger direkte i tekstbokse (f.eks.: =[felt1]+[Felt2]) -Undgå SQL-strenge direkte i kontrolelementer og på formularer - gem hellere som forespørgsel og angiv denne i postkilde og rækkekilde. -Medtag kun de mest nødvendige felter i disse forespøgsler - felter som ikke vises, regnes på eller filtreres på skal ikke med i recordsettet. -og en masse mere... :o)
Endelig kunne du jo overveje at skifte backend ud med en MSDE-engine (den gratis SQL server, som netop er optimeret til 5 brugere)
Nogle brugere har deres egen frontend og andre bruger en fælles frontend på et netværksdrev (ikke i samme mappe som backend). Det er åbenbart lidt forskelligt fra pc til pc hvad der køre hurtigst.
Desuden bør tabeller der ikke ændres ret tit ligge lokalt på frontends - f.eks. postnr tabel - og diverse opslagstabeller.
Niels
Synes godt om
Ny brugerNybegynder
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.