doomink
2.12.2010, 03:46:10
Witam,
pisze strone na której każdy odwiedzający ma mozliwość wypełnić formularz i na tej podstawie znaleźć przydatne informacje. Strone skonstruowałem w ten sposób aby odwiedzający wypełniał formularz, pobieram dane do php na ich podstawie piszę kwerende, łącze się z bazą i ją wykonuje, po czym php wyświetla wyniki. Problem w tym że u mnie czasem wykonanie najprostrzego zapytanie trochę trwa, a ze względu na temat strony spodziewam się dużej aktywności. Czy możecie mi poradzić na co zwrócić uwagę

Czy jest to wina mysql'a?? czyna mysql stoją typowe serwisy bazodanowe typu panoramafirm które codziennie odwiedza kilkanaście tys ludzi??
Z gory dziękuje za odpowiedz
Równie dobrze mogłeś napisać: "Mieszkam nad rzeką. Czy grozi mi powódź?". Oczywiście brak wszelkich danych na temat: ile metrów na poziomem lustra wody, ile od brzegu, czy jesteś za czy przed wałami itp. Równie dobrze możemy wróżyć z fusów bo nie znamy hostingu, konfiguracji serwera, jakości skryptów, struktury bazy danych i tabel oraz typu silnika na jakim są tabele oparte. A poruszasz temat optymalizacji, który jest tematem, nomen omen, rzeką i jest zależny od ogromu czynników, których poza wspomnianymi można by jeszcze trochę wymienić. Każdy przypadek trzeba analizować indywidualnie. Sam obsługuję serwis, gdzie dziennie jest po kilka tysięcy userów i stoi on na mysql, a nawet nie sapnie, choć dla większych już sugeruje się rozwiązania oparte o postgresa lub oracle.
Odpal zapytanie np. w phpmyadmin i sprawdź czas jego wykonania. Może problem nie leży po stronie bazy.
Jeśli okaże się, że czas wykonania zapytania jest zbyt długo to sprawdź indeksy, użyj explaina, przeanalizuj zapytanie może ono jest błędne.
doomink
3.12.2010, 00:00:02
ok, rzeczywiście nie napisałem o hostingu ponieważ na razie mam konto na webuda(do sprawdzania czy działa), a hosting będę wybierał jak napiszę strone. Baza danych to około 20 kolumn. Zapytania są prostę w stylu select nazwa from 'dzial' where d1 like $_GET['a'] and d2 like $_GET['b']. Zzstanawiam się czy jeśli tak napiszę serwis to będzie działał wydajnie (pomijam sprawę hostingu) czy lepiej zacząc pisać w czymś innym (ważne aby było free również do zastosowań komercyjnych). Aha baza danych ma na razie około 5 tys rekordów ale docelowo około 200 tys.
phpion
3.12.2010, 07:54:42
Cytat(doomink @ 3.12.2010, 00:00:02 )

Zapytania są prostę w stylu select nazwa from 'dzial' where d1 like $_GET['a'] and d2 like $_GET['b'].
To, że zapytania wyglądają na proste nie oznacza, że są szybkie. Użycie LIKE '%costam%' nie powoduje użycia indeksu. Będzie on użyty jeśli warunek będzie bez pierwszego %, czyli LIKE 'costam%'.