WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Många databasanrop (https://www.wn.se/forum/showthread.php?t=25390)

andi 2007-11-30 11:31

Jag har en sida med ett menysystem som skapas dynamiskt utifrån en databas. Tabellerna som innehåller menyns olika huvudnivåer, mellannivåer och undernivåer innehåller kanske 500 rader. Kommer detta bli väldigt resurskrävande även fast tabellerna är små? Alltså tar varje anrop en massa resurser även om SQL-frågan i sig går snabbt? Är det kanske läge att använda en databas-cache?

jonny 2007-11-30 11:55

Menyerna kanske kan genereras en gång när applikationen startar och sparas i någon form av applikationsvariabel iställeT?

andi 2007-11-30 12:02

Citat:

Originally posted by jonny@Nov 30 2007, 12:55
Menyerna kanske kan genereras en gång när applikationen startar och sparas i någon form av applikationsvariabel iställeT?

Hur menar du då? Menyn genereras vid varje anrop men den ser annorlunda ut på olika sidor beroende på vilka val användaren gör. Det är ingen utfällbar meny som ser likadan ut varje gång. Jämför med tex DN.SE. Om man väljer "SPORT" får man en annan undermeny än om man väljer "KULTUR" om du förstår vad jag menar.

abcd 2007-11-30 13:20

Ja, det är dags att cachea... Eller. Det beror ju också lite på hur mycket trafik du har.
Håll koll på serverbelastningen och var beredd på att sätta in åtgärder när systemet börja bli lite svagt i knäna.

Vilken typ av cachenig som är lämpligt kan jag inte riktigt svara på. Det beror på i vilken miljö applikationen körs i, vilket programmeringsspråk som används osv.

Weaver 2007-11-30 15:58

Behöver menyn lagras i databasen? Filsystemet är alltid snabbare.

coredev 2007-11-30 16:56

Kolla upp memcached.. låter som det är perfekt för dina behov..

Memcache är guld.. :)

studiox 2007-11-30 17:24

Beror på vad du har för databas. MySQL är grymt snabb på SELECT (Det är iofs. dom flesta databaser).

Jag gör precis som du (2D menysystem som blir ett 3D träd på sajterna). Jag kör det på cirka 10 sajter (det är samma kod och databas på alla) i ett portalsystem jag har. Vi har cirka 20-30.000 unika besökare i månaden men det tar inga resurser att tala om. Vi har just nu nästan 300 pages (Som genererar menyerna) och det går snabbt. Jag gör ju inte en query på alla 300 varje gång dock (Det gör säkert inte du heller)

andi 2007-12-01 15:29

Citat:

Originally posted by Weaver@Nov 30 2007, 16:58
Behöver menyn lagras i databasen? Filsystemet är alltid snabbare.
Menyn ändras hyfsat ofta och det görs i en windowsklient som är kopplad till databasen så det känns smidigt att ha den lagrad där. Jag undrade mest bara om varje anrop tar resurser i sig även om själva frågan är snabb. Blir kanske smidigast med memcached, då kan jag ju använda det till övriga delar av databasen också. Brukar man ha memcached på en egen burk eller kan man köra php, mysql och memcached på samma?

macson 2007-12-03 22:24

Citat:

Originally posted by coredev@Nov 30 2007, 17:56
Kolla upp memcached.. låter som det är perfekt för dina behov..

Memcache är guld.. :)

Precis! Håller med! Det är extremt bra!

/ M

danjel 2007-12-04 17:40

Tror inte du behöver göra något.
Har sett sidor som kör 100 queries..no problemos

obe 2007-12-04 17:56

Citat:

Originally posted by danjel@Dec 4 2007, 18:40
Tror inte du behöver göra något.
Har sett sidor som kör 100 queries..no problemos

Nja, det gäller att ha så få SQL-anrop som möjligt om du ska få upp prestandan.

CacheLite är ganska enkelt att använda.

En bra artikel om performance i php:
http://www.sitepoint.com/article/caching-p...php-performance

WizKid 2007-12-04 18:07

Visst hjälper det att få upp prestanda om man har få SQL-anrop men mycket viktigare är ju vilka frågor man ställer. Ibland är det ju effektivare att göra flera än att vara tvungen att skriva en krånglig fråga.

danjel 2007-12-18 12:29

Citat:

Ursprungligen postat av obe
Citat:

Ursprungligen postat av danjel
Tror inte du behöver göra något.
Har sett sidor som kör 100 queries..no problemos

Nja, det gäller att ha så få SQL-anrop som möjligt om du ska få upp prestandan.

CacheLite är ganska enkelt att använda.

En bra artikel om performance i php:
http://www.sitepoint.com/article/cac...hp-performance

Citat:

Nja, det gäller att ha så få SQL-anrop som möjligt om du ska få upp prestandan.
Nja, ett sql anrop går mycket snabbt i sig. Frågorna i sig kan vara problem som WizKid säger..


Alla tider är GMT +2. Klockan är nu 23:41.

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