Skocz do zawartości
webmaniac

Potężna baza danych + częste aktualizacje + mocna maszyna

Polecane posty

Dysponuję maszyną w WebTropii:

  • Intel Core i5-750 (4x2.66GHz)
  • 6GB DDR3 RAM
  • 2x1000GB SATAII

Oraz dysponuję bazą danych MySQL, której jedna z tabel ma już dosyć konkretny rozmiar - 2,5GB (rośnie o 100mB dziennie).

Chciałbym zapytać Was jak skonfigurować plik my.cnf tak, by jak najlepiej radził sobie z tym obciążeniem wykorzystując 100% maszyny? Generalnie - wolę, żeby maszyna miała 90% wykorzystanych zasobów przez 3 sekundy niż 10% przez 2 minuty. Zależy mi na szybkim dostępie do danych (wyszukiwanie z wildcardem - np. %erotyk%). Optymalizację bazy danych przeprowadzam obecnie co 12 godzin, poprawia to wydajność o parę procent, ale cudów nie ma. Nie grzebałem jeszcze w konfiguracji MySQL.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Zainwestuj w administratora który wykona optymalizację mysql - sam nie dasz rady zrobić tego optymalnie jeżeli się na tym nie znasz.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

(wyszukiwanie z wildcardem - np. %erotyk%)

 

Przykro mi, ale wildcardy obustronnie otwarte nie korzystają z indeksów. Wykorzystywany jest algorytm Turbo Boyer-Moore'a. Niestety słowo turbo w nazwie odnosi się jedynie do sposobu działania algorytmu, a nie do czasu potrzebnego na odszukanie %erotyk%.

 

Przy takich zapytaniach twoja maszyna cichutko sobie umrze.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Wybadam, ile kosztuje rozwiązanie przedstawione przez xorg.

 

Ewentualnie zrobię coś, aby zredukować korzystanie z wildcarda. Może regexp w zapytaniach?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Ewentualnie zrobię coś, aby zredukować korzystanie z wildcarda. Może regexp w zapytaniach?

 

A skorzystanie z zewnętrznych mechanizmów wyszukiwania np. sphinx (http://www.sphinxsearch.com/) ? W moim jednym projekcie idealnie się sprawdza właśnie przy takim wyszukiwaniu.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

A skorzystanie z zewnętrznych mechanizmów wyszukiwania np. sphinx (http://www.sphinxsearch.com/) ? W moim jednym projekcie idealnie się sprawdza właśnie przy takim wyszukiwaniu.

 

Osobiście zdecydowanie polecam. W przypadku dużych baz i wyszukiwania pełnotekstowego jedynym sensownym rozwiązaniem jest sphinx lub lucene. Ten pierwszy jest raczej prostszy w łączeniu z aplikacjami php/python/ruby, lucene jest wspaniała w przypadku integracji z istniejącymi aplikacjami w javie.

W przypadku sphinxa nawet złożone wyszukiwania pełnotekstowe na kilkunastu milionach wpisów trwają ułamki sekund, czego po żadnej optymalizacji nie da się powiedzieć o mySQLu

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×