mysql_query Posted October 3, 2011 Report 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
briedis Posted October 3, 2011 Report 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
mysql_query Posted October 3, 2011 Author Report Posted October 3, 2011 Labi, pamēģināsim Memcache. Quote
l27 Posted October 3, 2011 Report 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
mysql_query Posted October 3, 2011 Author Report Posted October 3, 2011 lielākā daļa ir select, pamēģināšu "union". Quote
briedis Posted October 3, 2011 Report Posted October 3, 2011 Vispār, kas tie tādi par kvērijiem? Sarežģīti? Indeksi tiek izmantoti pilnvērtīgi? Quote
mysql_query Posted October 3, 2011 Author Report Posted October 3, 2011 kveriji kuri dod datus pēc ID. (nosaukums, teksts, vārds utt), viss vienkāršākie kveriji. Quote
Gints Plivna Posted October 3, 2011 Report 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
l27 Posted October 3, 2011 Report 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
Kaklz Posted October 3, 2011 Report 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
codez Posted October 3, 2011 Report 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
mysql_query Posted October 3, 2011 Author Report 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
codez Posted October 3, 2011 Report 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
l27 Posted October 3, 2011 Report Posted October 3, 2011 Ja tabulas nav lielas , ielādē masīvā un pēc tam griezies pie masīva, nevis pie DB. Quote
marrtins Posted October 3, 2011 Report Posted October 3, 2011 MySQL gadījumā IN labāk aizvietot ar OR konstrukcijām - būs ātrāk. Quote
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.