![]() ![]() |
Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.11.2005 Skąd: Zabrze Ostrzeżenie: (0%)
|
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. Ten post edytował adalgrim 9.02.2010, 15:21:55 |
|
|
|
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 441 Pomógł: 71 Dołączył: 3.09.2007 Skąd: wrocław Ostrzeżenie: (0%)
|
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 |
|
|
|
Post
#3
|
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.11.2005 Skąd: Zabrze Ostrzeżenie: (0%)
|
Dziękuję, za szybką odpowiedź. Zaraz zapoznam się ze stroną (IMG:style_emoticons/default/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... |
|
|
|
Post
#4
|
|
|
Grupa: Zarejestrowani Postów: 690 Pomógł: 81 Dołączył: 6.04.2005 Skąd: Szczecin Ostrzeżenie: (0%)
|
|
|
|
|
Post
#5
|
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 8.11.2005 Skąd: Zabrze Ostrzeżenie: (0%)
|
To już mam w głowie (IMG:style_emoticons/default/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ę (IMG:style_emoticons/default/smile.gif)
Ale i tak wielkie dzięki za linki. Na pewno taki zbiór się komuś przyda (IMG:style_emoticons/default/smile.gif) Ten post edytował adalgrim 9.02.2010, 15:51:01 |
|
|
|
![]() ![]() |
|
Aktualny czas: 22.12.2025 - 15:09 |