![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Hej - na początku zaznaczę, że nie jestem zawodowym programistom, a raczej takim amatorej-hobbystom, który czasami wykorzystuje php do pracy zawodowej (siedzę w e-commerce, więc czasami przydają się takie umiętności do napisania jakichś rozwiązań automatyzujących pracę czy generujące różne treści pod seo itp).
Obecnie wdrażamy nowy sklep i jestem mocno zaskoczony ilością zapytań jakie takie skrypty generują do bazy danych. Pomijam już fakt, że firma, która nam wdraża obecnie skrypt zrobiła jakiś master fackup, to jednak przyjrzałem się gołemu skryptowi (Prestashop), który np. mając 10 produktów w koszyku i odświeżeniu potrafi wygenerować +250 zapytań. Oczywiście wiem z czego to wynika - takie skryptu muszą być maksymalnie elastyczne i przez to wszystko przechowują w bazach danych od statusów po wersje językowe, ale jednak rodzi się pytanie ile to jest racjonalna ilość zapytań. Mam w swojej historii taki skrypt sklepu napisany jeszcze w Symfony 1.0, na którym działa w miarę duży jak na polskie warunki sklep i analogiczna strona wywołuje 6-10 zapytań - fakt było to rozwiązanie w 100% dedykowane, bo w tamtych czasach nie było jeszcze dobrych platform sklepowych, więc większość tabel atomowych ze statusami itp. siedzi w cachu pliku konfiguracyjnego itd. Teraz pytanie czy te ilości zapytań w produktach OpenSource (np. Magento, Prestashop czy nawet Wordpress) to jest niechlujna architektura / brak optymalizacji czy po prostu dzisiejsze (rozbudowane) skrypty tak mają, bo stawia się na elastyczność kosztem optymalizacji? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Temat raczej z kategorii ogólnych - obiecałem sobie jak najmniej zaglądać pod maskę bo w końcu po to zlecam, żeby tego nie robić sam.
W gołej preście sprawa jest dość oczywista - po prostu działa to na zasadzie ordynarnego ActiveRecord bez żadnej optymalizacji na zasadzie np. -> select produkt ->select nazwa produktu z bazy tłumaczeń where id = 1 ->select status produktu from tlumaczenia statusow -> select dostepna ilosc from ilosci i tak w pętelce dla każdego produktu, który np. jest w koszyku. W moim przypadku akurat problem jest głębszy, bo chłopakom z 250 zapytań zrobiło się 1000 ;-) Ja mniej więcej wiem dlaczego, bo widać to w profilerze Presty (prawdopodobnie koszyk jest kilka razy przeliczany - albo im się gdzieś powieliło odwołanie, albo jakiś moduł to robi), ale dokładnego błędu nie będę za nich szukał. Te zapytania rzędu 250 nie są dla mnie większym problemem, bo i tak muszę działać na dedyku, a te kilka tysięcy osób, które przewija się dziennie przez sklep to dla dedyka nie jest specjalne obciążenie. Temat jak piszę z kategorii ogólnej - nie chodzi mi tu o naprawienie konkretnego błędu. Bardziej chodzi mi o to, czy to teraz taki standard programistyczny w aplikacjach OS (dla szerokiego grona) aby była maksymalna elastyczność kosztem braku optymalizacji czy też nie. W Wordpresie widać np. podobny schemat. Dodasz kilka dodatków i niby prosty skrypt blogowy potrafi wygenerować całkiem spore obciążenie. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 12:46 |