WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Prestanda flera Access-db (https://www.wn.se/forum/showthread.php?t=14099)

Yepp 2006-05-15 16:16

Okay, har sökt en hel del - såväl här som externa källor, men inte hittat några riktigt tillfredställande svar - förhoppningsvis finns det någon som kan ge lite klarhet i det hela...

Well, vet sen tidigare att Access inte är speciellt optimerat för webbplatser med ett större antal användare, men av ren enkelhet valdes den metoden inledningsvis och plötsligt börjar man känna att man kanske växt ur det hela...
Det jag undrar är då om det påverkar något om man använder sig av flera access-databaser. Dvs man anropar inte dem samtidigt på samma sida, men om man väljer att splitta upp innehåll så att beroende på vad som hämtas används olika databaser. Påverkar det prestandan positivt eller negativt?
Finns det några andra tips man bör tänka på vid användning av access-db, förutom de klassiska att t.ex. stänga alla databaskopplingar så fort man är klar och så?

Dessutom som en bonusfråga - ungefär när har man "växt helt ur" access, när är det dags att "make the switch" till MySql motsvarande - hur omständigt är en konvertering? Någon som har erfarenhet av att ändra ifrån access till t.ex. MySql - hur mycket måste ändras i den ASP-kod som används idag? Eller räcker det med att ändra själva koden för kopplingen - som t.ex. nämns i detta inlägg http://www.webmasternetwork.se/index...and,mysql&s=wn

Välkomnar alla typer av inlägg och svar :)

grazzy 2006-05-15 22:22

Att köra flera databaser och göra "hack" runt ett befintligt stort problem (som microsoft access i 9 av 10 fall är) är fel.

Det är troligen inte så jobbigt att konvertera. Om ni inte har tidigare erfarenhet av mysql blir det såklart jobbigare eftersom ni då måste lära er att administrera (både som systesystemadmins och databasadmins) mysql vilket är betydligt mera avancerat än med access.

MySQL är enligt många benchmarks upp mot 10 gånger så snabbt som access och kommer således att skala betydligt bättre. Frågan ni borde ställa er är primärt hur mycket ni kommer att växa och redan nu kanske planera för "nästa" steg, dvs när ni måste klustra eller liknande.

Avråder iaf starkt från att försöka bushacka förbi ert problem, köp i så fall temporärt en fetare dedikerad databasserver.

hundserver 2006-05-15 22:37

Citat:

Originally posted by Yepp@May 15 2006, 16:16
Okay, har sökt en hel del - såväl här som externa källor, men inte hittat några riktigt tillfredställande svar - förhoppningsvis finns det någon som kan ge lite klarhet i det hela...

Well, vet sen tidigare att Access inte är speciellt optimerat för webbplatser med ett större antal användare, men av ren enkelhet valdes den metoden inledningsvis och plötsligt börjar man känna att man kanske växt ur det hela...
Det jag undrar är då om det påverkar något om man använder sig av flera access-databaser. Dvs man anropar inte dem samtidigt på samma sida, men om man väljer att splitta upp innehåll så att beroende på vad som hämtas används olika databaser. Påverkar det prestandan positivt eller negativt?
Finns det några andra tips man bör tänka på vid användning av access-db, förutom de klassiska att t.ex. stänga alla databaskopplingar så fort man är klar och så?

Dessutom som en bonusfråga - ungefär när har man "växt helt ur" access, när är det dags att "make the switch" till MySql motsvarande - hur omständigt är en konvertering? Någon som har erfarenhet av att ändra ifrån access till t.ex. MySql - hur mycket måste ändras i den ASP-kod som används idag? Eller räcker det med att ändra själva koden för kopplingen - som t.ex. nämns i detta inlägg http://www.webmasternetwork.se/index.php?a...,and,mysql&s=wn

Välkomnar alla typer av inlägg och svar :)

varför inte helt sonika satsa på en sql databas lösning ist??

digiArt 2006-05-15 22:41

Jag kör 1miljon+ dynamiskt genererade sidor mot access per månad på en sajt, med gamla asp. Med rätt kodning håller det rätt länge.

Nu håller jag iof på att byta till sqlserver och .net, men det är pga expansion som är förestående.

Westman 2006-05-15 22:45

Mycket beror på servern i sig. Jag har mycket dålig erfarenhet av Accessdatabaser när det är en del (50+) samtidig trafik som ska läsa och skriva i databaserna. Läsa fungerar bra men skriva, det är inte kul. Det brukar sluta med att servern köar förfrågningar och det blir allmänt tvärsegt.

Nej, sql i alla dess formar är överlägset. Access är marginellt bättre än textfiler.

Yepp 2006-05-15 22:57

Okay - tackar för inläggen. Upplever idag inga problem med access som db, men känner att det säkerligen inom en kanske inte alltför snar framtid är dags att ändra databaslösning. Stämmer mycket riktigt att mina erfarenheter inom övriga lösningar, t.ex. MySql är väldigt begränsade.

hundserver: Som sagt, anledningen att en satsning på en annan lösning inte skett är att allting succesivt växt fram. Dessutom är som nämnt kunskaperna inom övriga lösningar relativt begränsade.

digiArt: Intressant att höra att det alltså trots allt går att ha relativt höga belastningar, men jag antar att det är dags (precis som för er) att alltså inom en inte alltför lång framtid konvertera.

grazzy: Hehe... okay inga bushack är aktuella alltså - är det en analys av det hela, eller har du själv erfarenheter av att arbeta mot flera access-db på en och samma webbsida?

Westman: i dagsläget är det främst läsning, men med tanke på att antalet registerade användare ökat relativt kraftigt och därmed också "typiska community-funktioner såsom meddelanden fram och tillbaks" - så jag antar att även skrivandet till db är på väg uppåt.

Vore trots allt intressant att veta om någon provat att använda sig av flera Access-db till en och samma webbsida (dvs det handlar aldrig om någon samtidig användning av det båda - utan t.ex. som exempel att man i noveller.asp använder sig av noveller.mdb och i artiklar.asp använder artiklar.mdb för att göra en simpel förenkling)...

digiArt 2006-05-16 09:14

Citat:

Originally posted by Yepp@May 15 2006, 22:57
...som exempel att man i noveller.asp använder sig av noveller.mdb och i artiklar.asp använder artiklar.mdb för att göra en simpel förenkling)...
Nej, gör inte så. Du har direkt med detta tappat iden med databaser. Det heter relationsdatabaser, försök att göra en join på ett vettigt sätt över flera databaser.

Byt hellre i så fall till ngt med bättre prestanda. Särskilt ngt som kan handha lagrade procedurer, ex. MySql 5 eller SqlServer (Oracle och andra finns också, men är nog inte de som finns mest tillgängliga via shared hosting).

(I mitt exempel ovan handlar det främst om läsning av data, inte skrivning)

Systementor 2006-05-16 09:27

Citat:

flera Access-db till en och samma webbsida (dvs det handlar aldrig om någon samtidig användning av det båda - utan t.ex. som exempel att man i noveller.asp använder sig av noveller.mdb och i artiklar.asp använder artiklar.mdb för att göra en simpel förenkling
Visst har jag gjort såna lösningar. Dock inte pga prestandakrav utan för att förenkla uppdateringar (ville jag lägga till ett fält i tabellen ARTIKEL kunde jag ladda hem artikel.mdb, öppna filen i Access och lägga till fältet, och sedan ladda upp filen till servern igen - utan att andra delar av sajten blev lidande).

Jag är faktiskt lite osäker på om en sån här split som du föreslår skulle göra så mycket för prestandan - jag menar mot varje enskild tabell har du ju fortfarande precis samma belastning. Jag tror inte att databasanropen från noveller.asp "störs" av anropen på Artiklar.asp oberoende om tabellerna [novell] och [artikel] ligger i samma databas eller inte. Kanske har jag dock fel - jag är något osäker på hur lockhanteringen funkar i Access - kanske den är global för databasen i något avseende.

För prestanda tror jag mer på vertikal split - dvs splitta varje tabell i enskilda databaser - tex Artiklar200604, Artiklar200605 etc

Detta ger dock en i grunden helt oacceptabel design - men beroende på din lösning kanske den är ok ändå.

Jag har dock haft mycket goda erfarenheter av Access i webblösningar - prestandan är bättre än man tror - skriver du koden rätt och ser till att ha din connection öppen så kort tid som möjligt så ska det mycket till innan du får "krockar" = samtidiga användare mot databasen (detta är långt ifrån samma som samtidiga besökare på websajten).

Dock vill jag säga att även om man kan få en prestanda som är "god nog" med Access så är det inte jämförbart med en riktig databasmotor som MySQL eller MSSQL.

De (relativt enkla) tester jag gjort ger följande resultat

Vid många samtidiga användare är MySQL minst 10 gånger snabbare än Access - använder du stored procedures i MySQL5 kommer du upp i 20 gångers skillnad - där ligger också MSSQL.

Vid sekvensiella anrop (inga samtidiga) är MySQL och MSSQL runt 2-5 gånger snabbare.

Westman 2006-05-16 09:31

Citat:

Originally posted by Yepp@May 15 2006, 22:57
Vore trots allt intressant att veta om någon provat att använda sig av flera Access-db till en och samma webbsida (dvs det handlar aldrig om någon samtidig användning av det båda - utan t.ex. som exempel att man i noveller.asp använder sig av noveller.mdb och i artiklar.asp använder artiklar.mdb för att göra en simpel förenkling)...
Jo jag har, visst underlättar det så länge du inte ska öppna flera olika databaser från samma asp-fil för då tar det lägre tid och mer resurser men som sagt ska du göra en förändring så skulle jag iallafall rekommendera att gå över till mysql.

Systementor 2006-05-16 12:14

Citat:

hur mycket måste ändras i den ASP-kod som används idag
Det jag kan minnas att jag brukar stöta på vid konvertering Access -> MySQL

- connectionsträngen givetvis

- datum (kanske använder du now() eller ngt i sql:en)

- vill också minnas att "inre SQL"-satser strular i MySQL (dvs har du sql såsom
select * from tabell_a where id in (select id from tabell_b))
får du göra om till en vanlig join istället

Yepp 2006-05-16 17:18

Okay - tackar för alla inlägg, anser mig ha fått svar på de frågor jag ställde - bussigt värre...

Kontentan blir att någon ny större utveckling av sidan med access-db som grund inte kommer att ske utan det blir till att påbörja en konvertering till MySQL när tid finnes, och därefter utveckla sidan vidare.

Fungerar som sagt helt okay i dagsläget, men i samband med de förändringar som var tänkta att skapas (och redan är på G) kommer databasanvändningen (främst skrivandet till) förmodligen öka relativt markant.

Tackar också för alla inlägg gällande de patruller man kan stöta på vid en konvertering (är som sagt hyfsat novis inom MySQL...) - mao förbered er kanske på en del ytterligare frågor i detta forum i framtiden ;)
Men det ska nog gå bra, om inte annat lär man sig alltid något på det.

Well, tackar.

grazzy 2006-05-16 17:25

Använd MySQL 5.0 så kan du använda subqueries. Fast det är rätt bra coding practice att låta bli då 99% av alla subqueries är onödiga.

Det största problemet med Access -> MySQL är själva kunskapshindret. I Access "ritar" man upp en tabell, i MySQL är din bästa vän notepad/vim. Det finns ett par verktyg för att underlätta skapandet av tabelller, tex phpMyAdmin även om jag personligen anser att de stjälper mer än hjälper.

Det är av lite högre vikt att man har koll på hur en databas verkligen fungerar när man använder MySQL än Access, vad olika typer av index innebär, hur foreign och primary keys faktiskt fungerar osv.

Ni kommer helt klart att manuellt få skapa om tabellerna, sedan bör ni kunna importera all data via csv-exporter från access (eller så skriver ni skript som sköter det). Det är en del jobb ni har framför er. Min bedömning är att ni gör helt rätt som lämnar access bakom er. Glöm inte att det finns massa dokumentation och hjälp helt gratis tillgängligt för MySQL via forum, nyhetsgrupper och irc.

Staffconsulting 2006-05-16 19:51

prestanda problem med access har jag endast märkt vid väldigt stora tabeller med över 100 000poster... Men har inte jobbat med så stora sidor (många samtidiga användare).

jag jobbar endast med mssql server och enda problemet jag har märkt är att fälttypen räknare ej finns, så man måste ändra alla dessa så dom blir unika och ökar med 1 i värde..

Viktigt är hur ni programmerar också.. Om ni bara ska läsa i tabellen öppna då endast för att läsa osv..


Alla tider är GMT +2. Klockan är nu 20:57.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson