![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 194 Pomógł: 2 Dołączył: 12.04.2004 Skąd: Częstochowa Ostrzeżenie: (10%) ![]() ![]() |
Mam problem dość spory dotyczący granic możliwości przerobowych mysql i php.
Mam skrypt który ściąga dane w postaci xml i wrzuca je do bazy. W czasie wykonywania skryptu parsuje on 6 plików xml (simplexml) o wadze 300mb każdy razem okoł 3 milionów rekordów które następnie wrzucam do bazy mysql. Jak dotąd - skutecznie wieszam kompa lub - dostaje komunikat o koncu limitu czasu wykonywania skryptu który wydłużam do 2700 sec. - lub o czyms takim "Fatal error: Out of memory (allocated 702808064) (tried to allocate 16 bytes) " (działa póki co na localhost amd64 3,4 ghz, 1gb ram, winXp). czy ktoś z was miał podobne projekty do realizacji ? i czy jest na to jakiś sposób w ramach php+mysql (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) Ten post edytował dado 1.03.2007, 09:38:35 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Sorki za OT'a:
~Sh4dow śledzę ten wątek od początku i muszę przyznać, że z każdym Twoim postem wątek coraz bardziej się nadaje na Humor. Czy Ty zdajesz sobie sprawę jakie pierdoły gadasz? Przecież każdy argument i wypowiedź ~splatcha kładzie na łopatki Twoje. A jednak się bezsensownie miotasz. Przecież dostałeś konkretne benchmarki. Czy Ty w ogóle masz doświadczenie w tym temacie? Po tym co czytam: wątpię. Jedyne co do czego masz rację to że lepiej parsować strumieniowo xml'a. Proszę napisz coś jeszcze: bawisz mnie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) |
|
|
![]() ![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 569 Pomógł: 0 Dołączył: 17.08.2003 Skąd: Dąbrowa Górnicza Ostrzeżenie: (0%) ![]() ![]() |
Proszę napisz coś jeszcze: bawisz mnie (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) Nie no oczywiscie ze mam zielonego pojescia a dla ciebie szczegolnie pisze cos zeby poprawic ci humor w taki szary dzien jak dzis zgodze sie ze zapytanie bedzie sie wykonywac dluzej. Ale niepodejzewam zeby biblioteka w c++ odzwiercieglala zachowanie skryptu w php bardzo dokladnie test pierwszy 100 rekordow 1 zapytanie sql Kod Memory Usage: 262144 Time: 0.04914s. Iteracje: 100 100 rekordow 100 zapytanie sql Kod Memory Usage: 524288 Time: 0.0274s. Iteracje: 100 drugi test 5000 rekordow 1 zapytanie Kod Memory Usage: 6291456 Time: 0.55521s. Iteracje: 5000 5000 rekordo 5000 zapytan Kod Memory Usage: 262144 Time: 1.28052s. Iteracje: 5000 trzeci test 10000 rekordo 1 zapytanie Kod Memory Usage: 12058624 Time: 1.09467s. Iteracje: 10000 10000 rekordow 10000 zapytan sql Kod Memory Usage: 262144 Time: 2.83552s. Iteracje: 10000 czwarty test 50000 rekordow 1 zapytanie Kod #1153: Got a packet bigger than 'max_allowed_packet' bytes Memory Usage: 58195968 Time: 0.44581s. Iteracje: 50000 zapytanie sie nie udalo 50000 rekordow 50000 zapytan sql Kod Memory Usage: 262144 Time: 14.05176s. Iteracje: 50000 dla ostatniego testu byłem zmuszony zwiekszyc ilosc pamieci dla skryptu do 64 MB Nie mowie ze sie nie zgadzam ze splatch'em. Ale podaje rozwiazanie na tyle optymalne ze nie ogranicza mnie wielkosc xml'a bedzie to dzialac dla 10 rekordow i dla 100 GB xml'a poprostu bedzie dłuzej sie wykonywac. Nie musze kombinowac i sprawdzac jak duze packi beda mi przechodzic. Jesli pojawi sie blad w zapytaniu, z jakiego kolwiek powodu. Powiedzmy ze chodzi o dane z xml'a to niezaladuje sie jedno zapytanie a nie cala paczka. Wszystko zalezy od tego jak krytyczny jest skrypt. Skrypt uzalezniasz od tego jak ma dzialac. Jesli administrator zmniejszy wartosc max_allowed_packet na serwerze mysqla to ? A no i jeszcze jedno, ja nie testowalem tego na tablicy gdzie sa dwa inty ale na 6 kolumnach gdzie 3 to int i 3 to varchar. Podkreslam jeszcze raz, ze nie neguje tego co pisał splatch. Ja stwierdzam cos co zauwazylem kiedys pracujac z duzymi plikami xml ktore obslugiwalem przez php. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 11.10.2025 - 22:30 |