2010-06-21 15 views
7

Mój serwer My MySql ma obecnie 235 baz danych. Czy powinienem się martwić? Wszystkie mają taką samą strukturę z tabelami MyISAM.Ile baz danych może obsługiwać MySQL?

Sprzęt to wirtualna maszyna z 2 GB pamięci RAM działającej na czterordzeniowym procesorze AMD Opteron 2,2 GHz.

Ostatnio cPanel wysłał mi e-mail z informacją, że MySql nie powiodło się i nastąpiło ponowne uruchomienie.

Oczekuje się, że nowe bazy danych zostaną utworzone i zastanawiam się, czy powinienem dodać więcej pamięci, czy powinienem po prostu dodać kolejną maszynę wirtualną.

+1

Chociaż nigdy nie słyszałem o ograniczeniu, mogę sprawdzić strukturę - czy to naprawdę konieczne? –

Odpowiedz

0

Nie wierzę, że istnieje twardy limit, jedyną rzeczą, która naprawdę ogranicza użytkownika, będzie sprzęt i ruch, jaki będą uzyskiwać te bazy danych.

Wydaje się bardzo mało pamięci, co prawdopodobnie oznacza, że ​​nie masz ogromne liczby połączeń ...

Należy zacząć od profilowania użycia dla każdej bazy danych (lub zestaw baz danych, w zależności od tego, jak są one wykorzystywane oczywiście).

Moja sugestia - MySQL (lub jakikolwiek inny serwer bazy danych) może zużyć więcej pamięci. Nigdy nie masz dość.

0

Robisz to źle.

Komentarz ze szczegółami na temat baz danych i prawdopodobnie możemy Cię poinformować, gdzie projekt się nie udał.

+1

Dziękuję wszystkim za uwagi. System jest podobny do Google Analytics. Odwiedziny użytkowników witryny są rejestrowane w tabeli "master". Natywna aplikacja monitoruje tabelę główną i przetwarza zarejestrowane odwiedziny i zapisuje je w bazie danych użytkowników. Każdy użytkownik ma swoją własną bazę danych. Zdecydowano się na odłamki. Dla każdego użytkownika uruchamiane są różne raporty i statystyki. Jest szybszy, jeśli działa tylko na konkretnym DB (mniej danych). Wiem, że to nie jest najlepsza konfiguracja. Ale musimy sobie z tym poradzić przez jakiś czas. –

6

"Bazy danych" w mysql są naprawdę katalogami, nie ma wpływu na swoje limity, niezależnie od tego, czy umieścisz wszystkie tabele w jednej, czy w każdej z nich.

Głównym problemem jest pamięć podręczna tabeli. Bez jego dostrojenia będziesz mieć domyślną pamięć podręczną tabeli (zazwyczaj 64), co oznacza, że ​​będziesz zamykał tabelę za każdym razem, gdy ją otwierasz. To jest bardzo złe.

Z wyjątkiem MyISAM, jest jeszcze gorzej, ponieważ zamknięcie tabeli powoduje wyrzucenie kluczowych bloków z pamięci podręcznej klawiszy, co oznacza, że ​​kolejne wyszukiwania indeksu lub skany będą odczytywać rzeczywiste bloki z dysku, co jest straszne i powolne i naprawdę musi być unikanym.

Moja rada brzmi:

  • Jeśli to możliwe, natychmiast zwiększyć pamięć podręczną stół do> łączną liczbę stołów
  • monitorować status zmienna globalna opened_tables w swoim monitoringu; jeśli rośnie szybko, to jest złe.
  • Wykonaj testy wydajności i odporności na tym samym sprzęcie w środowisku nieprodukcyjnym (jeśli jeszcze tego nie robisz).
+1

Dodałbym również, sprawdź limit deskryptorów plików - nie będąc bezpośrednio połączonym z nie. baz danych, możesz zabraknąć deskryptorów plików z wieloma tabelami MyISAM. – nos

+0

Normalny skrypt startowy zwiększy liczbę (pod Linuksem), jeśli będzie to konieczne - na pewno można mieć 10 000 bez problemu. Również inne silniki nie mogą używać deskryptora pliku na tabelę. – MarkR

1

(prześlij komentarz w celu uzyskania lepszej widoczności) Dziękuję wszystkim za uwagi. System jest podobny do Google Analytics. Odwiedziny użytkowników witryny są logowane do tabeli "master". Natywna aplikacja monitoruje tabelę główną i przetwarza zarejestrowane odwiedziny i zapisuje je w bazie danych użytkowników. Każdy użytkownik ma swoją własną bazę danych. Zdecydowano się na odłamki. Dla każdego użytkownika uruchamiane są różne raporty i statystyki. I jest szybszy, jeśli działa tylko na konkretnym DB (mniej danych) Wiem, że to nie jest najlepsza konfiguracja. Ale musimy sobie z tym poradzić przez jakiś czas.

+0

Ta informacja wydaje się być odpowiednia dla pierwotnego pytania. Jeśli chcesz, aby była lepsza widoczność niż komentarz, możesz edytować oryginalne pytanie, aby uwzględnić te informacje? – Trevor

Powiązane problemy