Леший Posted July 13, 2010 Report Share Posted July 13, 2010 Vopšem, ir pieprasījums INSERT DELAYED INTO table (fields) VALUES (values1), (values2), ... Tagad dažu iemesli dēļ ir jāpāriet uz InnoDB, bet tur INSERT DELAYED nestrādā. Kā var panākt līdzīgu efektu uz Inno? Quote Link to comment Share on other sites More sharing options...
marrtins Posted July 13, 2010 Report Share Posted July 13, 2010 Kam Tev delayed innodb tabulai? :O Quote Link to comment Share on other sites More sharing options...
Леший Posted July 13, 2010 Author Report Share Posted July 13, 2010 Tu nepareizi saprati, man vajag InnoDB tabulai, ar kuru tiek izmantots DELAYED. Man principā vienalga, ja tas tiek panākts ar ne-MySQL iespējam, galvēnais, lai būtu iespēja palaist to insertu no PHP tā, lai var turpināt strādāt. Quote Link to comment Share on other sites More sharing options...
Vebers Posted July 13, 2010 Report Share Posted July 13, 2010 Izravē no sources tos DELAYED un viss būs cool. Pēc principa MyISAM tikai vajag tos delayed, jo pie insert myisam noloko visu tabulu, bet innoDB tikai konkrētu row`u. Tapēc tas DELAYED kā tāds nav nepieciešams. Quote Link to comment Share on other sites More sharing options...
Леший Posted July 13, 2010 Author Report Share Posted July 13, 2010 Vebers, tabula ir milzīga (ap 116kk ierakstu), un jebkurš inserts ir vismaz 0.5 sekundes. Manā gadījumā tur ir līdz 20 insertiem, līdz ar to, pieprasījums aizņem 10 sekundes. Quote Link to comment Share on other sites More sharing options...
bubu Posted July 13, 2010 Report Share Posted July 13, 2010 Vai esi noskaidrojis, kas tajās 0.5 sekundēs aizņem vislielāko laiku šim vaicājumam? Quote Link to comment Share on other sites More sharing options...
marrtins Posted July 13, 2010 Report Share Posted July 13, 2010 (edited) Tu nepareizi saprati, man vajag InnoDB tabulai, ar kuru tiek izmantots DELAYED. Man principā vienalga, ja tas tiek panākts ar ne-MySQL iespējam, galvēnais, lai būtu iespēja palaist to insertu no PHP tā, lai var turpināt strādāt. Nē, es sapratu. Vienīgi no tā delayed innodb tabulai nav nekādas jēgas. Vebers jau pateica kāpēc. 116k ierakstu - tāds pirdiens vien ir ;) Drīzāk paskaties, vai buferi ir adekvāti sakonfigurēti, galvenais, innodb_buffer_pool_size. innodb_flush_method kāds ir? Vispār - konfigu studijā. Edited July 13, 2010 by marrtins Quote Link to comment Share on other sites More sharing options...
Леший Posted July 13, 2010 Author Report Share Posted July 13, 2010 tak lasi uzmanīgi, nevis 116k, bet 116kk Quote Link to comment Share on other sites More sharing options...
bubu Posted July 13, 2010 Report Share Posted July 13, 2010 Miljonu jau parasti apzīmē ar M, nevis kk. kk izskatās pēc drukas kļūdas :) Quote Link to comment Share on other sites More sharing options...
Kaklz Posted July 18, 2010 Report Share Posted July 18, 2010 Droši vien tabulas struktūra/sadzejotie indeksi šeit arī varētu dot kaut kādu nojausmu, kas tieši ir pie vainas. Te kā reiz atceros kāda nu jau pie mums vairs nestrādājoša kolēģa veikumu ar tabulu, kurā bija ~100 kolonas un ~50 dažādi indeksi :) Quote Link to comment Share on other sites More sharing options...
codez Posted July 19, 2010 Report Share Posted July 19, 2010 uztaisi background procesu, kurš no ilgo kveriju rindas ņem kverijus un izpilda. Kad tev atnāk pieprasījums ar 20 ilgiem kverijiem, samet tos mazā tabuliņā un izsauc background procesu, kurš izpilda šo kverijus. Savukārt background process, ja iet jau kāds cits tāds bg process, pātraucās, jo šos kverijus varēs izpildīt jau ejošais bg process. Var arī pašā request-a PHP skriptā pārbaudīt, ja process iet, tad neko, ja neiet, tad palaiž procesu. Pats bg process ciklā skatās vai rindā stāv kveriji, ja nē, tad iziet, ja ir tad paņem vienu un izpilda. 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.