Avatar billede phpbegynder2004 Nybegynder
23. august 2007 - 18:22 Der er 5 kommentarer og
1 løsning

Count af mysql_queries

Hej,

Jeg har en hjemmeside med omkring faste 200 brugere.
Den kører fint, bortset fra at databasen går ned i ny og næ. I starten beskyldte jeg min udbyder for dårlig service, men jeg fandt ud af, at mine database connection er urimeligt høje. Især når jeg bruger joins.

Jeg har optimeret og optimeret med explain, og nu skulle samtlige queries have en key og en "rækkesøgning" på under 50.

Men den er stadig gal :(

Jeg har en index-fil, hvori jeg inkluderer alle undersider.

Er det muligt at lave en slags count, så for hver side der bliver loadet, bliver der talt hvor mange queries der blive kørt. Måske har jeg en while-fejl eller noget andet et eller andet sted...

Anyways. Bare kom med en masse foreslag. Det jeg primært søger, er altså en måde, hvorpå jeg kan undersøge, hvilke sider der er mest belastende for siden, og på den måde komme problemet til livs.
Det skal siges at min udbyder opbevarer data på clustrer på en sådan måde, at der ikke findes log-filer for den enkelte bruger. Ret surt.

På forhånd mange tak for hjælpen!
Avatar billede olebole Juniormester
23. august 2007 - 18:29 #1
<ole>

Hvis du har skrevet en overskuelig og dokumenteret kode, kan du jo se dér, hvad der til enhver tid måtte ske  :)
Det lyder ikke godt, at du skulle have problemer med en MySQL-DB ved kun 200 faste brugere - og slet ikke at det skulle skyldes et ekstra højt antal forbindelser

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
23. august 2007 - 18:41 #2
Enig med Ole - du er den nærmeste til at løse problemet. Og det du kan, er at kigge på forespørgsler i databasen, der er ens på mange sider over lang tid. Den slags kan (og bør) man cache, så det ikke koster hver gang. Nogle laver sql-kald for dynamisk at lave CSS-kode, der kun ændrer sig en gang om måneden, når der lige ændres en farve eller et billde.

Kig også på "komplicerede" forespørgsler, der hentes mange gange, men reelt kun opdateres få gange - det kan være: vis nyeste indlæg i alle forum. Man kan sikkert skrue en SQL sammen til at finde de nyeste indlæg, men man kunne også bare have en tabel, der har en indgang for hvert forum, og hver gang der kommer et nyt indlæg, opdateres tabellen for det forum. Aflæsningen er blevet billigere.

Jeg har barberet SQL-aætninger væk i et projekt ved at logge hver eneste SQL-sætning i en tabel (undtagen dem der laver logningen), og så studere dem efterfølgende.
Avatar billede htx98i17 Professor
23. august 2007 - 19:52 #3
Det kunne være dejligt hvis I ville skrive en artikel om netop dette emne.

Erik ->
"Man kan sikkert skrue en SQL sammen til at finde de nyeste indlæg, men man kunne også bare have en tabel, der har en indgang for hvert forum, og hver gang der kommer et nyt indlæg, opdateres tabellen for det forum."

Vil du ikke uddybe det lidt nærmere? Jeg kan læse at det er skide smart, men forstår det ikke hvordan det skal gøres :)

Ved godt det ikke er mit spm, håber ikke det generer nogen...
Avatar billede phpbegynder2004 Nybegynder
23. august 2007 - 21:23 #4
Det er helt okay htx.

Tak for hjælpen Erik og Ole. Synes dog ikke rigtig I svarer på mit spørgsmål. Og det er lidt tendensen når man stiller et spørgsmål som dette. Jeg er godt klar over, at min hjemmeside ikke indeholder perfekt kode - langt fra. Jeg har været igennem hele optimeringsprocessen og jeg kommer ikke videre. Jeg er klar over, at jeg er den der er problemet nærmest, og derfor burde have lettest ved at løse det, men jeg er ikke i stand til det.
Derfor ønsker jeg at vide om man kan lave en query-count, så jeg kan få et overblik over, hvor det værste ligger, så jeg enten kan få ordnet det, eller lukket de afdelinger af sitet.
Avatar billede erikjacobsen Ekspert
23. august 2007 - 21:36 #5
Hvis du kører det derhjemme, kan du se hvad tal mysql samler sammen til dig i sin statistik. Specielt hvis du ved hvor du skal kigge.

htx98i17: det er der nok andre der har gjort - læs om database normalisering, og ikke mindst hemmelighed: de-normalisering. Sådan på godt jysk handler normalisering om at undgå redundans - så det starter man med. Redundans er li'som bigami: mere end en. Altså når de samme data står to steder.

Når vi så har fået data ned og de kun står eet sted, så kigger vi efter flaskehalse, og regner på om det kan betale sig at putte nogle data 2 steder: prisen er en dyrere opdatering, gevinsten er en billigere læsning. Det hedder de-normalisering.

Ok - det var så Pixie-udgaven. Gå på et godt database kursus en aften om ugen i 2 år. Så hjælper det.
Avatar billede phpbegynder2004 Nybegynder
17. september 2007 - 02:52 #6
Lukket
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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