mysql_query Posted October 3, 2011 Report Share Posted October 3, 2011 Sveiki, Ir projekts, kurā tiek izpildīti pie katras ielādes ~ 20 līdz 30 querijiem. Ielādes laiks - 0.09 seconds. Queriju skaitu ir plānots palielināt. Ielādes laiks attiecīgi palielināsiet. Ielādes laiks - 0.20 seconds. Paši queriji ir optimizēti, pate tabula arī optimizēta. Nu lūk, jautājums. Kā izpildīt piemēram, 50 querijus ar minimālu izpildes laiku. Quote Link to comment Share on other sites More sharing options...
briedis Posted October 3, 2011 Report Share Posted October 3, 2011 (edited) Kešo. Ar Memcache, piemēram. Tomēr 0.2s jau nav īpaši daudz (ja nav liela noslodze, paralēli pieprasījumi). EDIT: 0.2 nez vai lietotājs vispār varētu just, lielāks bottle-necks būs lejupielādes ātrums... Edited October 3, 2011 by briedis Quote Link to comment Share on other sites More sharing options...
mysql_query Posted October 3, 2011 Author Report Share Posted October 3, 2011 Labi, pamēģināsim Memcache. Quote Link to comment Share on other sites More sharing options...
l27 Posted October 3, 2011 Report Share Posted October 3, 2011 Ja tie ir selekti, var mēģināt ar union apvienot. Tā samazinās sūtīto pieprasījumu skaitu. Quote Link to comment Share on other sites More sharing options...
mysql_query Posted October 3, 2011 Author Report Share Posted October 3, 2011 lielākā daļa ir select, pamēģināšu "union". Quote Link to comment Share on other sites More sharing options...
briedis Posted October 3, 2011 Report Share Posted October 3, 2011 Vispār, kas tie tādi par kvērijiem? Sarežģīti? Indeksi tiek izmantoti pilnvērtīgi? Quote Link to comment Share on other sites More sharing options...
mysql_query Posted October 3, 2011 Author Report Share Posted October 3, 2011 kveriji kuri dod datus pēc ID. (nosaukums, teksts, vārds utt), viss vienkāršākie kveriji. Quote Link to comment Share on other sites More sharing options...
Gints Plivna Posted October 3, 2011 Report Share Posted October 3, 2011 1kārt - visātrāk dara tad, ja neko nedara. Varbūt pusi no vaicājumiem var izmest? Varbūt vismaz tos var nepildīt pie __katras__ ielādes? 2kārt - 1 tabula un 20-30 vaicājumi un būs 50? :O Ciklā lasam kaut ko pēc id??? OK, neko par to nezinot ļoti dīvaini izklausās. 3kārt - 0.09 sekundes, 0.2 sekundes (pieņemot, ka tas ir visiem kopā), tās lietotājam ir tādas visnotaļ netveramas vienības. Varbūt ir vērts koncentrēties uz lietām, kas reāli aizņem vairāk laika, jo pat, ja tās 0,2 sekundes noīsinās līdz 0, būs acīmredzam ieguvums? Tā vien gribās pareklamēt pāris savus ierakstus: http://datubazes.wordpress.com/2007/11/06/kur-paliek-laiks/ http://datubazes.wordpress.com/2011/01/19/darbu-seciba/ Gints Plivna http://datubazes.wordpress.com Quote Link to comment Share on other sites More sharing options...
l27 Posted October 3, 2011 Report Share Posted October 3, 2011 (edited) Ja lapu būvē no daudziem querijiem un ja ir liels apmeklējums, tad ieteicams kešot lapu nemainīgās daļas failos un ar readfile() sūta klientam. Tā būvēju www.neslimo.lv Edited October 3, 2011 by l27 Quote Link to comment Share on other sites More sharing options...
Kaklz Posted October 3, 2011 Report Share Posted October 3, 2011 20-30 query pie katras lapas ielādes jau velk uz to, ka tu mēģini vienā lapas ielādes reizē izdarīt apmēram 5 reizes par daudz. Nemaz nerunājot par to, kas notiek pie 50query vienā lapā. Parēķini 100 pageview sekundē un tev ir uz db serveri 5000 query sec. Quote Link to comment Share on other sites More sharing options...
codez Posted October 3, 2011 Report Share Posted October 3, 2011 (edited) Ja ielāde ir pēc id visiem, ka rāksta autors, tad ož pēc tā, ka autors nezin par join un izmanto vienu lielu selektu, no kura ņem id un selekto atsevišķi 20 reizes. Autor, labāk uzraksti ko tieši un kā tu selektē, tā tu ātrāk dabūsi optimizācijas padomus. Edited October 3, 2011 by codez Quote Link to comment Share on other sites More sharing options...
mysql_query Posted October 3, 2011 Author Report Share Posted October 3, 2011 Ja join zinu. Izmantoju, šeit tas man nav nepieciešams. 1. Ir bloks. blokā ir tikai un vienīgi ID. 2. Šajā blokā man jāparāda, (piem.) virsraksts, teksts, vārds. 3. Viens kverijs izvada tikai un vienīgi nosaukumu, jebkurā vietā lapā, pēc ID pieprasījuma. un pārējie tāpat. Quote Link to comment Share on other sites More sharing options...
codez Posted October 3, 2011 Report Share Posted October 3, 2011 (edited) Ja tas ir no vienas tabulas, tad var veidot šādu kveriju: SELECT * FROM tabula WHERE id IN (2,3,5,7,11,13,17,23); tādā veidā atlasīt uzreiz N ierakstus ar dažādiem id. Edited October 3, 2011 by codez Quote Link to comment Share on other sites More sharing options...
l27 Posted October 3, 2011 Report Share Posted October 3, 2011 Ja tabulas nav lielas , ielādē masīvā un pēc tam griezies pie masīva, nevis pie DB. Quote Link to comment Share on other sites More sharing options...
marrtins Posted October 3, 2011 Report Share Posted October 3, 2011 MySQL gadījumā IN labāk aizvietot ar OR konstrukcijām - būs ātrāk. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.