Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Duże obciążenie - sposoby optymalizacji (Sphinx?)
Forum PHP.pl > Forum > Bazy danych > MySQL
adalgrim
Witam,

Mam kilka pytań dotyczących optymalizacji MySQL dla dużych witryn www.

W jaki sposób można zoptymalizować wyszukiwanie pełnotekstowe (MATCH, AGAINST)?
Czy jeśli MySQL nie wyrabia z prostym zapytaniem (baza ok 20 tys wpisów, 5 pól text z indeksem pełnotekstowym) MATCH, AGAINST to pozostaje tylko wykorzystanie dodatków typu Sphinx Engine?
Są jakieś inne? Spotkał się ktoś z artykułem, który z nich jest najlepszy? W jakim stopniu np. Sphinx Engine odciąża bazę danych od tego typu zapytań?

W jaki sposób na dużych serwisach rozwiązywane są statystyki np. czytań artykułu?
Bo chyba nie tak, że z każdym wejściem update'owana jest tabela i robiony jest zapis z +1 ?
Jak zbierać informację o dacie logowania, ip użytkownika, gdy na serwis wchodzą setki użytkowników na godzinę?
Bo jeśli chodzi o COUNTY kto co i ile to wiem, że można puścić w nocy na procedurze i zapisać tylko wynik.

Jak bez ingerencji administratora serwera, zmiany ustawień mysql, można przyspieszyć zapytania ? Cachowanie PHP memcache, APC?
Jak w takim razie cachować zapytania MATCH, AGAINST?

Jeśli mamy wpisy w danej kategorii (powiedzmy ok 10 tys ze 100 tys wszystkich wpisów należy do kategorii A), to jak stosować paginację?
Bo LIMIT, OFFSET wg EXPLAIN na zapytanie SELECT i tak zwraca 10 tys, co jest chyba lekko za dużę...

Jak taka optymalizacja powinna być robiona na dużym serwisie (nie mówmy tutaj o rozdzieleniu ruchu na kilka serwerów, tylko skoncentrujmy się na możliwie najlepszej optymalizacji w obrębie jednego serwera)

Słyszałem również, iż nie powinno się używać ORDER BY RAND(), jak w inny sposób wyciągnąć 5 losowych wpisów z tabeli?

Prosiłbym o trochę odsyłaczy do literatury, własnych spostrzeżeń, opinii.
Przeszukałem manual i artykuły o mysql, pytałem wujka google, ale jakoś nikt nie porusza tematu dużych witryn www, a te mnie właśnie interesują.

Z góry dziękuję za pomoc.
zzeus
http://www.mysqlperformanceblog.com - kopalnia wiedzy na temat optymalizacji bazy danych, polecam też książkę którą napisali autorzy blogu, jest dostępna w języku polskim - http://helion.pl/ksiazki/wydmsq.htm

Jak chodzi o przyspieszanie zapytań, to czeka Cię żmudna praca. Zacznij od logów mysql na temat slow_query.
Musisz brać kolejno zapytania i je analizować (EXPLAIN), następnie poprawianie zapytań, czyli odpowiednie ustawianie indeksów, odpowiednio napisane klauzule WHERE, odpowiednie korzystanie z JOIN ... itd
adalgrim
Dziękuję, za szybką odpowiedź. Zaraz zapoznam się ze stroną smile.gif

Stosowałem EXPLAIN, część zapytań jest już najlepsza z możliwych.
Największy problem mam przy zapisie statystyk (np te czytania artykułu, info o użytkowniku) oraz przy tym wyszukiwaniu po bazie...
adalgrim
To już mam w głowie smile.gif Ale ponownie nic nie wspominają o dużych serwisach. Mi chodzi o sposób optymalizacji, gdy na serwis wchodzi nie 300 użytkowników dziennie, tylko 300 na minutę smile.gif
Ale i tak wielkie dzięki za linki. Na pewno taki zbiór się komuś przyda smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.