[ NetworkAdmin @ 23.08.2004. 21:17 ] @
| Naisao sam na sljedeci problem, vrijeme odgovora servera mi je 0.01 sekundu (tog reda velicine) kod aplikacije koja salje upite mysql bazi po razlicitim WHERE uslovima osim kad saljem najprostiji moguci upit WHERE ID IN(...)
Kod ovog moda WHERE ID IN(...) koristim 20 puta mt_rand(1234465,3514163) funkciju da dobijem 20 slucajnih ID brojeva (ID su bez prekida nije bilo brisanja i nije predvidjeno) i dobijem vrijeme odgovora oko 0.2 do 0.5 sekundi to jeste za red velicine vise. Probao sam u mysql konzoli sam SELECT ... WHERE ID IN(...) traje jako malo ispod 0.002 sekunde obicno.
Slucaj ORDER BY RAND() LIMIT 20 ne dolazi u obzir jer tabela ima preko 2 miliona rekorda i taj order by rand() traje 25 sekundi.
Sad me interesuje jeli stvarno toliko vremenski zahtjevno to mt_rand generisanje broja... jer ja ne vidim drugi razlog "zasto bi skripta zapela". |
[ Gojko Vujovic @ 24.08.2004. 00:05 ] @
Da te obavestim da si došao do tanke granice kada se PHP zamenjuje C-om.
I da se ne zavaravamo, svešće se na ono što sam ja u startu rekao, ako se sećaš:
1. ne može mysql
2. ne može php.
Osim za prototyping.
[ -zombie- @ 24.08.2004. 00:54 ] @
ne razumem kakve ovo veze ima sa brzinom PHPa (odnosno Ca), kada je mt_rand() implementirana unutar biblioteke (verovatno C ili eventualno C++), a PHP je samo poziva.. drugim rečima, izbor jezika nema nikakve veze sa brzinom funkcije za koju NA pita..
ali da ga razočaram, ni brzina te funkcije (verovatno) nema veze sa njegovim problemom.. mislim, to si mogao i sam da testiraš.. ja za tih 0.2 sekunde koje pominješ izvrtim preko 100,000 (i slovima: sto hiljada) poziva funkcije mt_rand()..
biće da je negde drugde problem.. da li si iz konzole baš ispitivao sa 20 brojeva "ravnomerno" raspoređenih između 0 i 2mil? i to više puta za redom (sa različitim "slučajnim" brojevima)?
da li slučajno ne radiš još nešto kod tog upita? možda šalješ upit da saznaš broj elemenata u tabeli? ili nešto drugo?
a moguće je i da se rezultati ili neki indexi za ostale upite keširaju, a za ovaj sa random baš i ne mogu.. ;)
[ NetworkAdmin @ 24.08.2004. 01:16 ] @
Gojko i ja vodimo neku internu raspravu na forumu pa sad nije fol necemo vise pa zombi zanemari to... a sto se tice ovog mt_rand i ja sam bencmarkovao na datom racunaru i malo veci sam dobio broj za o.2 sekunde...
Vidite nije ni kod keshiranja problem a ni kod MySQL ovaj vadi podatke super brzo i sa tim random pa nije ni do kesha a sad vrijeme se potrosilo na kolacice dok pitas browser kad je u kolacicu bilo posljednji put udareno dugme koje trazi random rezultate (radi flood protekcije) tu se izgubi to vrijeme koje je u stvari Net Respond time a ne MySQL respond time
[ NetworkAdmin @ 24.08.2004. 01:17 ] @
naravno flood protekciju sam sad preko IP napravio server side pa sve radi kako bi i trebalo i mnogo brze :))
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.