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

Duże tabele i analizy w MySql

Zbliżając się do „szacunku ', 2 miliony wierszy to nadal stosunkowo mały rozmiar tabeli. (Dlatego zazwyczaj możliwa jest szybsza wydajność)

Jak się przekonałeś, zewnętrzne symbole wieloznaczne są szczególnie nieefektywne i będziemy musieli znaleźć rozwiązanie tego problemu, jeśli ten przypadek użycia jest wspólny dla Twojej aplikacji.

Może być tak, że nie masz odpowiedniego zestawu indeksów . Zanim jednak przejdę dalej, chciałbym podkreślić, że podczas gdy indeksy zazwyczaj poprawiają wydajność DBMS za pomocą wszelkiego rodzaju instrukcji SELECT, to systematycznie ma to negatywny wpływ na wydajność operacji "CUD" (np. SQL CREATE/INSERT, UPDATE , DELETE czasowniki, czyli zapytania, które pisz do bazy danych, a nie tylko odczyt do niego). W niektórych przypadkach negatywny wpływ indeksów na zapytania „zapisujące” może być bardzo znaczący.

Moim powodem, dla którego szczególnie podkreślam ambiwalentny charakter indeksów, jest to, że wygląda na to, że Twoja aplikacja zbiera sporo danych w ramach normalnego działania i będziesz musiał uważać na możliwą degradację, ponieważ zapytania INSERT są spowalniane . Możliwą alternatywą jest zbieranie danych do stosunkowo małej tabeli/bazy danych, bez lub z niewielką liczbą indeksów, oraz regularne importowanie danych z tej wejściowej bazy danych do bazy danych, w której odbywa się eksploracja danych. (Po zaimportowaniu wiersze mogą zostać usunięte z „wejściowej bazy danych”, dzięki czemu będzie ona mała i szybka dla funkcji INSERT.)

Kolejna obawa/pytanie dotyczy szerokości wiersza w tabeli rzutowania (liczba kolumn i suma szerokości tych kolumn). Zła wydajność może być związana z faktem, że wiersze są zbyt szerokie, co skutkuje zbyt małą liczbą wierszy w węzłach liści tabeli, a tym samym głębszą niż potrzebną strukturą drzewa.

Wracając do indeksów...
W związku z kilkoma zapytaniami w pytaniu, wygląda na to, że możesz skorzystać z indeksu ip + note (indeks utworzony przynajmniej z tych dwóch kluczy w tej kolejności). Nie można tutaj przeprowadzić pełnej analizy sytuacji indeksu i, szczerze mówiąc, możliwego przeglądu schematu bazy danych (za mało informacji dla jednego...), ale ogólnym procesem jest sporządzenie listy najczęstszych przypadków użycia i aby zobaczyć, które indeksy bazy danych mogą pomóc w takich przypadkach. Można uzyskać wgląd w sposób obsługi poszczególnych zapytań, na początku lub po dodaniu indeksów, za pomocą polecenia mySQL EXPLAIN.

Normalizacja LUB demormalizacja (a nawet kombinacja obu!) jest często realnym pomysłem na poprawę wydajności również podczas operacji wydobywczych.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Host „xxx.xx.xxx.xxx” nie może połączyć się z tym serwerem MySQL

  2. MySQL min i max każdej kolumny

  3. MySQL Usuwanie zduplikowanych kolumn na Left Join, 3 tabele

  4. Znajdowanie nadchodzących urodzin za pomocą jOOQ

  5. BŁĄD tabeli mySQL 1064