Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Partycjonowanie / sharding / dzielenie MySQL - w którą stronę iść?

Na pewno zaczniesz mieć problemy z tą 42-gigabajtową tabelą, gdy przestanie ona mieścić się w pamięci. W rzeczywistości, gdy tylko nie mieści się już w pamięci, wydajność bardzo szybko się pogorszy. Jednym ze sposobów przetestowania jest umieszczenie tej tabeli na innej maszynie z mniejszą ilością pamięci RAM i sprawdzenie, jak słabo działa.

To jest niepoprawne. Partycjonowanie (poprzez funkcję MySQL 5.1 lub to samo przy użyciu tabel MERGE) może zapewnić znaczną poprawę wydajności, nawet jeśli tabele znajdują się na tym samym dysku.

Załóżmy na przykład, że uruchamiasz zapytania SELECT na swojej dużej tabeli przy użyciu zakresu dat. Jeśli tabela jest cała, zapytanie zostanie zmuszone do przeskanowania całej tabeli (a przy tym rozmiarze nawet użycie indeksów może być powolne). Zaletą partycjonowania jest to, że zapytania będą uruchamiane tylko na partycjach, na których jest to absolutnie konieczne. Jeśli każda partycja ma rozmiar 1 GB, a Twoje zapytanie musi uzyskać dostęp tylko do 5 partycji, aby się zrealizować, połączona tabela 5 GB jest znacznie łatwiejsza do obsługi przez MySQL niż potworna wersja 42 GB.

Jedną rzeczą, którą musisz zadać sobie, jest to, w jaki sposób przeszukujesz dane. Jeśli istnieje szansa, że ​​Twoje zapytania będą wymagały dostępu tylko do określonych fragmentów danych (tj. zakresu dat lub zakresu identyfikatorów), pewnego rodzaju partycjonowanie okaże się korzystne.

Słyszałem, że nadal istnieją pewne błędy w partycjonowaniu MySQL 5.1, szczególnie związane z wyborem właściwego klucza przez MySQL. Tabele MERGE mogą zapewnić tę samą funkcjonalność, chociaż wymagają nieco więcej narzutu.

Mam nadzieję, że to pomoże... powodzenia!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd składni spowodowany użyciem zastrzeżonego słowa jako nazwy tabeli lub kolumny w MySQL

  2. Dostrajanie MySQL do szybkiego tworzenia kolumn/indeksów podczas rozwoju

  3. MySQL - Jak sumować czasy?

  4. Jak dodać dwa wyniki count(*) razem na dwóch różnych tabelach?

  5. MySQL – jak usunąć tabelę, jeśli istnieje w bazie danych?