22. maj 2007 - 18:09Der er
4 kommentarer og 1 løsning
Optimering af database requests
Hej Eksperter,
Jeg har en hjemmeside med 300 brugere, hvoraf 50 af dem logger ind hver dag. Jeg bruger servage.net som host, og de tilbyder 3600gb trafik om måneden, hvilket er rigeligt! Mit store problem er, at jeg (tilsyneladende) har en rigtig dårlig database programmeringsstil. For hver dag går databasen ned :( Det er ikke "too many connection" fejl. Den kan bare ikke connecte. Jeg er ret overbevist, at fejlen ligger på min side, og at jeg skal skrive nogle mere effektive database reuqests. Jeg ved bare ikke: 1. Hvor det dårlige kode er 2. Hvad der er effektivt og hvad der er ineffektiv kode.
Findes der nogle programmer der kan finde ud af, hvilke scripts der belaster databasen mest?
Jeg vil godt give Jer noget kode (plejer folk herinde at være glade for :) ), men jeg ved jo ikke hvor den er gal henne :(
Ja, at have en dårlig kodestil er en mulighed for dårlig performance. Men, den største synder er normalt hvis dine index er forkerte. Dine index skal være optimerede til dine queries, der kan evt. også være problemer med din databasenormalisering.
Det er bare noget du skal have med i dine overvejelser.
Jeg husker den første gang jeg skulle lave noget med query optimering tilbage i 1998. Jeg optimerede og optimerede på koden og queryen og query tog stadig 5min at køre, hvad jeg simpelthen ikke fattede. Så kom en daværende kollega ind og oprettede 2 index. Og vupti, query kørte på under 3sekunder. Er ufatteligt hvor stor en forskel det kan gøre.
En ting er at bruge indexes, men du burde nok i først omgang kikke på dine connections strings. Hvis du ikke får lukket tids nok, så vil connectionen hænge og det vil tage længere tid at eksekverer dine quaries.
Tak for svarene. Jeg tror det er mine indexes den er galt med. Har nemlig først hørt om dem for nylig (vidste ikke de eksisterede...). Jeg har nu oprettet indexes ved alle tabeller, men har ingen anelse om de "sidder" rigtigt. Derudover har jeg på ingen måde optimeret mine queries til at følge disse indexer, da jeg ikke ved hvordan man gør det.
Har netop checket nogle stats gennem phpmyadmin. Ved ikke helt hvad det betyder, men tror det er ret slemt...
Slow_queries 1.200
Handler_read_rnd 350 M Handler_read_rnd_next 52,19 G
Created_tmp_disk_tables 2.759 k Delayed_errors 1.747 Select_full_join 474 k Select_range_check 96
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.