Autor Zpráva
joe
Profil
Ahoj,

jsem ve fázi testování webu. Mám v tabulce 100 000 uživatelů a podobný počet fotek, ne-li více. Jak je možné, že na localhostu se mi stránka zobrazuje o něco delší dobu než na jiných stránkách, kde je velmi podobný počet uživatelů, může mi to někdo srozumitelně vysvětlit? Na jejich webu se to zobrazí skoro okamžitě, nevím jak by to vypadalo, kdybych stránky přesunul někam na server.

Pokud je dotaz bez seřazení, trvá opravdu chvíli. Pokud ale seřadím výsledek například podle sloupce typu datetime, tak trvá vykonání dotazu „až“ 3 vteřiny. Není to zase taková doba, jen nechápu, jak je možné, že v takové době už to má jiný web dávno načtené a zobrazené.

Samozřejmě, že je to možné docílit cachováním, ale pokud se přidá jeden řádek, pochybuju, že dochází k novému cachování 40 tisíc stránek...

Indexy v tabulkách také mám...

Databáze: MySQL
Typ tabulky: MyISAM

Mohl by mi někdo trochu vysvětlit, jak je to možné? :-) Případně co mám udělat pro urychlení.

Díky.
Joker
Profil
joe
Jak je možné, že na localhostu se mi stránka zobrazuje o něco delší dobu než na jiných stránkách, kde je velmi podobný počet uživatelů, může mi to někdo srozumitelně vysvětlit?
A) Máte pomalý počítač
B) Máte špatně navržený skript anebo dotazy do databáze, takže je to prostě pomalé
joe
Profil
Joker

A - Počítač mám nový. Ne úplně nejrychlejší, který je k dostání, ale nemyslím si, že je zase tak pomalý, aby to nezvládl:

Athlon 64 X2 Dual
4600+ (2, 4GHz)

2 GB RAM

B - Mám jen jeden obyčejný include, kde jsem to testoval, dotazy na DB jsem přes večer optimalizoval, ale přesto mi přijde, že web o kterém jsem psal (adresu psát nebudu) stránku zobrazí ve výsledku rychleji.
souki
Profil
zkus na ten dotaz dát explain ;)
Joker
Profil
joe
Tak ten dotaz prostě zabere moc času, nebo je sice rychlý, zato se dělá v cyklu.
joe
Profil
Joker
Samozřejmě, že třeba dotaz zabere hodně času, ale asi není možné, aby na tom druhém webu použili jiný dotaz, protože to dělá prakticky to samé.

souki
Zkouším ;)

I když nevím jak "zabránit" tomu, aby mi při tom dotazu neprocházel všemi řádky, vybírám totiž uživatele, kteří mají i nemají fotku. Pokud bych vybíral jen s fotkou, bylo by to mnohonásobně rychlejší, když ale vybírám obě varianty, prochází se téměř všemi řádky v tabulce uživatelů...
Joker
Profil
joe
Samozřejmě, že třeba dotaz zabere hodně času, ale asi není možné, aby na tom druhém webu použili jiný dotaz, protože to dělá prakticky to samé.
Tohle není tak úplně pravda ;)
Pro konkrétní problém v konkrétních podmínkách existuje nějaká výkonově optimální varianta řešení (případně několik rovnocenných optimálních variant). Pak ale existuje ještě nekonečně mnoho neoptimálních variant, které problém vyřeší taky, ale méně efektivně.

Když mám nějaký program, může jít napsat program dělající to samé, který bude 10x rychlejší. A zcela jistě půjde napsat program dělající to samé, který bude 10x pomalejší ;-)
DaveLister
Profil
A máš index na tom sloupci kde je to jesli ma fotky nebo ne?
joe
Profil
Joker
Jasně, ale asi jsem to myslel trošku jinak :-) Ale dobře, beru to, sám to vím, protože programuju taky, ale teď zpět k databázím.

Mám dvě tabulky, uživatelé a fotky. Teď chci vybrat nejnovější uživatele s fotkama i bez. Myslíš, že tohle jde řešit plno neoptimálníma způsobama? Nebyl bych si tím tak jistý :-) Mě jen zaráží to, jak je možné, že stránka z internetu, která dělá to samé se mi načte rychleji než ta, která mi běží na localhostu...

PS: zrovna v tomto případě se nemusí řešit žádné řazení podle datumu, aby se někdo nechytal z prvního příspěvku.
joe
Profil
DaveLister
Mám sloupec photo_id a když fotka je, tak je :-) a když není, tak je null, index tam mám.
Joker
Profil
joe
Jistěže to jde řešit neoptimálně... například dát všechny sloupce typu VARCHAR a podobně.

O všem jestli dotaz typu
SELECT id, jmeno FROM uzivatele ORDER BY datum_registrace DESC
pro tabulku se 100 000 řádky trvá několik desítek sekund, je s tou databází opravdu něco špatně.
DaveLister
Profil
Takže na localhostu i na tom serveru kde je to rychly máš stejný script i databázi

Jesli ne tak je určitě problém v tom tvym scriptu...Případně v databázi... zkus v phpmyadminu optimalizovat databazi... a nech si navrhnout datové typy sloupců
joe
Profil
Joker
Tak až takhle jsem to nemyslel, všechno varchar... :-)

O všem jestli dotaz typu...
Netrvá několik desítek sekund, ale trval mi třeb 3 sekundy.

DaveLister
Nemám, na localhostu mám svůj web a na serveru někde, o kterém jsem psal je úplně jiný web, jen to srovnávám, protože weby dělají téměř to samé a jen nedokážu pochopit, jak je možné, že ten na serveru to dělá rychleji.

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: