![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 215 Pomógł: 1 Dołączył: 13.04.2003 Skąd: z ławki przed blokiem Ostrzeżenie: (0%) ![]() ![]() |
witam
nie za bardzo wiedzialem gdzie to wrzucic czy do php czy do baz, ostatecznie padło na bazy mam taki kodzik w php
kod dziala na tabeli:
w user_child znajduje sie zserialozowana tablica z dziecmi danego usera. no i niestety juz przy okolo 1200 wpisach w bazie, czas dzialania tego skryptu na serwerkach nazwa.pl to ponad 100 sekund, az boje sie sprawdzac co bedzie jak bedzie tego wiece ma ktos pomysł na zoptymalizowanie tego? UPDATE: przysniło mi sie conieco i taki kod:
na tych samych danych czas dzialania 13 sekund. z czego 12 to wysłanie samych UPDATE do bazy, mysliCie ze da sie tutaj cos jeszcze wyciągnąc. Ten post edytował AcidBurnt 28.12.2005, 01:14:23 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Ok. Super. Świetnie.
A teraz może powiesz, co chcesz osiągnąć tym kodem? Myślę, że dzięki temu znacznie łatwiej byłoby optymalizować ten algorytm... -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 215 Pomógł: 1 Dołączył: 13.04.2003 Skąd: z ławki przed blokiem Ostrzeżenie: (0%) ![]() ![]() |
eh fakt sorki,
no wiec w user_child jest tablica uzytkwoników bedacych dzeiciami danego usera.. algorytm na przebudowywac to drzewo, a wlasciwie tworzyc je odnowa w razie wystepowania jakis problemów z systemem. wiec zbiera informacje kto jest rodzicem danego kogos, i dodaje do drzewa danego rodzica id dziecka |
|
|
![]()
Post
#4
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 467 Pomógł: 13 Dołączył: 22.02.2003 Ostrzeżenie: (0%) ![]() ![]() |
No więc ja bym powiedział - zmień podejście do sprawy. Wałkowaliśmy to tutaj setki razy i naprawdę pojawiły się świetne, np. http://forum.php.pl/index.php?showtopic=4037&hl=bsp rozwiązania. Bo z tą serializajcją i porównywaniem tablic nie wyrobisz..., oj nie
Tzn. zmień system kategorii (parent - child) na inny Ten post edytował Jabol 28.12.2005, 09:13:22 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 215 Pomógł: 1 Dołączył: 13.04.2003 Skąd: z ławki przed blokiem Ostrzeżenie: (0%) ![]() ![]() |
tyle ze to nie maja byc kategorie, tylko zaleznosci miedzy uzytkwonikami w systemie, i praktycznie moze sie to ciagnac w nieskonczonosc w glab, nie ma ograniczenia glebokosci drzewa.
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarząd Postów: 2 277 Pomógł: 6 Dołączył: 27.12.2002 Skąd: Wołów/Wrocław ![]() |
Wydaje mi się jednak, że jabbol ma rację.
Co prawda rozumiem, że idea zserializowanej tablicy ma zapewne zadanie optymalizowania pobierania tych danych. Jeśłi jednak problem sprowadza się do pobrania dzieci danego rodzica, to zwykły left join lub prosta procedura, zwracająca tablicę dzieci w żadnen sposób nie spowolni działania skryptu. A ty unikniesz ryzyka "wystepowania jakis problemów z systemem." -------------------- "Niezależnie od tego, jakie masz osiągnięcia, ktoś Ci pomaga..."
|
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 215 Pomógł: 1 Dołączył: 13.04.2003 Skąd: z ławki przed blokiem Ostrzeżenie: (0%) ![]() ![]() |
hm... chodzi o to ze system ma umozliwic proste dowolne zmiany w strukturze drzewa, np przeniesienie drzewa pod 1 userem do innego i tym podobne operacjie
EDIT dobra wiec jak to najlepiej rozwiazac, trzymac w tabeli tylko info o user parent, i wszelkie operacjie robic posiadajac tylko ta info, czy zrobic Sobie w bazie dodatkowa tebaele zawierajaca tylko relacjie (user,parent)? EDIT 2 chociaz wydaje mi sie ze przy koniecznosci zbudowania drzewa od poczatku calosc bedzie wymagala takiej samej liczby operajci ;/ i bedzie zajmowac ta samą ilosc czasu, co prawda funckja przebudowania zostala napisana tylko na wszelki wypdaek, i raczej staramy sie napisac system tak zeby nie bylo takiej mozliwosci jak przeklamania w bazie, miedzy innymi dla tego wybralismy postgresa korzystamy z commit i rollback na wszelki wypadek... i chyba nie bedzie z tym prolemu no ale lepiej miec i nie potrzebowac nic potrzebowac a nie miec Ten post edytował AcidBurnt 28.12.2005, 17:16:23 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 20.06.2025 - 08:49 |