![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 68 Pomógł: 0 Dołączył: 22.07.2007 Ostrzeżenie: (0%) ![]() ![]() |
to rozwazania jeszcze czysto teoretyczne ale poki co probowalem temat rozgryzac na duzo mniejszym pliku
na razie - nie wiem czy dobrze to wszystko robie ale jesli nie to prosze mnie poprawic i nakierowac uzywalem xmlreader(moze jednak lepszy bedzie sax bo widze ze wszedzie sie proponuje sax'a do tak duzych plikow) dodam ze przyklad dotyczyl poki co pliku o wadze 7,5 Mb z 8357 rekordow parsowanie takiego pliku z zapisem danych do tablicy zajmuje 1,434 sek. - duzo czy nie duzo? nie wiem czy powinno sie to zapisywac wlasnie do tablicy (najpierw wszyskie dane) robie to przy pomocy switcha w zaleznosci co sie znajdzie w xml'u a nastepnie wartosc atrybutu przypisuje do zmiennej i ta zmienna wrzucam do tablicy $trip_date = $reader->getAttribute('date'); $tablica[$licznik]['trip_date'] = $trip_date; nie wiem czy to jest dobry i efektywny sposob moze da sie jakos szybciej pozniej wedlug sugestii buduje w petli jeden duzy insert zeby nie obciazac bazy danych no ale wlasnie tutaj samo zbudowanie takiego duzego inserta zajmuje niemal 10 sekund a to wedlug mnie juz tragicznie dlugo robie to w petli przy pojedynczych insertach nie jest szybciej a wrecz wolniej zapisanie takiego zapytania do bazy to 0,1610 sek - tez w sumie nie wiem czy to duzo czy nie ale jak wezme pod uwage ze przede mna bedzie codzienna aktualizacja danych z dobrych kilku GB w tym takie kolosy jak 1,5GB plik to obawiam sie ze strasznie zamule vps'a 1,2GHz i 384 ramu (taki jest w planie - na wiecej na razie nie ma funduszy a obecnie jeszcze jade na hostingu z ktorego na pewno mnie admin wyprosi jak bede tak obciazal serwer ![]() --------------------------------- pierwsze podejscie optymalizacyjne dla zbudowania inserta z 10000 wpisow dalo dobre wyniki utworzenie inserta trwa teraz dla 10tys. rekordow okolo 0,033 sek. a nie jak przedtem nawet do 14 sek. - nie wiem dokladnie w czym byl problem ale obecnie petla budujaca zmienna przekazywana do zapytania wyglada nastepujaco
takze teraz najbardziej waskim gardlem pozostaje dalej samo parsowanie bo czas tworzenia samego inserta jak i przetwarzanie przez baze jest na calkiem przyzwoitym poziomie - tak mi sie przynajmniej wydaje w takim tempie dodanie 1 mln rekordow powinno zajac okolo 20 sek. a to juz chyba nie jest tragedia dla 20tys. rekordow na raz zrobienie inserta i wpisanie do bazy to okolo 0,31 sek. dla 50tys. mamy okolo 0,75 sek. przy 100tys. widac juz tendencje wzrostowa czasu czyli nie mamy tutaj wielkiego zysku czas potrzebny waha mi sie juz w granicach 1,9-3,3 sek. wiec trzeba bedzie to sobie jeszcze wymyslic ile na raz warto wpisywac zeby jeszcze skrocic czas wpisywania Ten post edytował aladin07 3.04.2009, 10:03:18 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 744 Pomógł: 118 Dołączył: 14.02.2009 Skąd: poziome Ostrzeżenie: (0%) ![]() ![]() |
Kolega przetwarza pliki Merlinowe?
![]() Ten post edytował maly_swd 1.06.2009, 22:28:27 -------------------- śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu.. |
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat parsowanie takiego pliku z zapisem danych do tablicy zajmuje 1,434 sek. - duzo czy nie duzo? nie wiem czy powinno sie to zapisywac wlasnie do tablicy (najpierw wszyskie dane) Niby nie. Ale bez sensu tak do tablicy. ![]() Masz coś takiego, jak XML Reader w PHP; przetwarza dane strumieniowo. -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 06:54 |