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

Jak duży jest za duży dla tabeli MySQL?

Nie ma dobrego ogólnego rozwiązania na pytanie „Jak duży jest za duży” — takie obawy często zależą od tego, co robisz ze swoimi danymi i jakie są Twoje względy wydajnościowe.

Istnieją pewne podstawowe ograniczenia dotyczące rozmiarów stołów. Nie możesz mieć więcej niż 1000 kolumn. Twoje rekordy nie mogą być większe niż 8 tys. Limity te zmieniają się w zależności od silnika bazy danych. (Te tutaj dotyczą InnoDB.)

Wygląda na to, że połączyłeś kilka różnych zestawów danych w jedną tabelę. Prawdopodobnie masz kilka pól, które informują, do jakiego zestawu danych odnosi się ten rekord, wraz z niektórymi polami danych i pewnymi informacjami o sygnaturze czasowej. To niezbyt obszerny rekord (chyba że rejestrujesz, powiedzmy, wszystkie parametry wejściowe każdego żądania). Twoim głównym problemem będzie selektywność . Indeksowanie tej tabeli w sensowny sposób będzie wyzwaniem. Jeśli Twoje wspólne pola mogą być na tyle selektywne, że możesz ich użyć do uzyskania żądanych rekordów bez sprawdzania tabeli, będzie to ogromny plus. (Por. skan tabeli)

W przypadku tylu rekordów dziennie (w zasadzie dwa na sekundę przez cały dzień, a zakładam, że masz okres szczytowego obciążenia, w którym jest on znacznie wyższy), warto również upewnić się, że przyjrzysz się optymalizacji na poprawa szybkości wstawiania . Z reguły więcej indeksów =wolniejsze wstawianie. Jeśli możesz, rozważ zarchiwizowanie przestarzałych rekordów w innej tabeli. W poprzednich miejscach pracy używaliśmy strategii archiwalnej:Ostatni miesiąc, Wcześniejsze trzy miesiące, Wcześniejsze sześć miesięcy, każda w osobnych tabelach. Innym pomysłem jest usunięcie starszych rekordów. Wiele środowisk po prostu nie potrzebuje informacji po określonej dacie. Trzymanie się rekordów logowania sprzed trzech miesięcy jest często zbyt drogie.

Wreszcie, nie zaniedbuj magazyny fizycznej Twojego stołu. Im cieńsze są twoje rekordy, tym mniej fizycznych operacji we/wy musi wystąpić, aby odczytać (lub wstawić) rekord. Indeksy można przechowywać na osobnym fizycznym dysku twardym. Jeśli w twoich rekordach jest dużo nadmiarowych danych, skompresowana tabela może w rzeczywistości oznaczać wzrost prędkości. Jeśli masz trochę gotówki do spalenia, rozważ wartość dobrej macierzy RAID do strippingu danych.

Tak więc, aby odpowiedzieć na twoje podstawowe pytanie:to dużo płyt, ale przy ostrożnym dostrajaniu nie będzie to problemem.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Składnik czasu paska MySQL od datetime

  2. Zapytanie SQL zwracające operand powinno zawierać 1 kolumnę

  3. MySQL Wildcard dla =- czy istnieje?

  4. Sqlite czy MySql? Jak zdecydować?

  5. Zapytanie mnożenia MySQL