Autor Zpráva
4li
Profil
Ahoj.

Potrebujem radu od skusenejsich. Ako firma mame nase 2 weby umiestnene na 1. dedicated serveri. Tento server je u naseho poskytovatela hostingu. Webstranky navstivi denne cca. 100.000 unique visitors. V poslednej dobe su webstranky pomalsie a pomalsie a poskytovatel nas ubezpecil, ze to neni sposobene poctom pristupov, ale prilis mnoho dotazov na MySQL server. Mam k dispozicii mysql log. Chcel by som preto pozret na vsetky mysql dotazy, ktore prebiehaju na webe, ale chcem sa spytat, ze na co presne mam pozerat, resp. na co si dat pozor, co mam osetrit, aby sa zmensil pocet dotazov, ale pri tom stranky ostali rovnako funkcne? Co sa tyka dotazov, tak sa jedna len o jednoduche volania typu "SELECT * FROM.."

Dik moc za pomoc. :)
joe
Profil
4li
"SELECT * FROM.."
Tohle není moc vhodné, pokud nevyužijete všechny sloupce.

Kolik dotazů jde na db pro zobrazení stránky? (tj. jeden požadavek na stránku)

EDIT: případně jaký framework nebo systém používáte?
nightfish
Profil
podívej se, které stránky jsou nejčastěji volané a zároveň je pro jejich zobrazení potřeba nejvíce mysql dotazů...
pokud používáte vlastní DB vrstvu, bude to snadné
pokud ne, tak bude možná nutné veškerá volání např. mysql_query nahradit za vlastní funkci, která provede logování a pak až zavolá mysql_query...
Kajman_
Profil *
co mam osetrit, aby sa zmensil pocet dotazov

Prozkoumat možnost cache.
Perry
Profil
Jaká je povaha těch dat, co se tahají z DB ? Např. pokud 1x denně ukládám do DB data a pak je celý den čtu několika dotazy, lze DB ulehčit tak, že si vygeneruji PHP soubor, v kterém ta data budou uložena. Není to nic extra, ale primární účel to splní.

Např. vygeneruji soubor data.gen.php a v něm jsou už předem naplněné proměnné (nebo jsou v něm uložená data jako serialozované objekty) a pak se s tím pracuje stejne jako s include v php.

Jinak SELECT * bych urcite nepouzival, zkusil bych postavit INDEXy v DB, pokud tam nejsou (ale zase moc INDEXů také škodí, tohle si chce někde nastudovat podrobněji), místo třeba 5-ti dotazu typu SELECT * FROM a WHERE a.b = 10 bych pouzival dotazy slozitejsi, ktere techle 5 daji do jednoho (pokud kazdy z tech 5 bezi 0,0006 a ten jeden bezi 0,001 usporu si spoctes :))

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: