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

10 przydatnych wskazówek dotyczących dostrajania wydajności MySQL

Podobnie jak wszystkie inne bazy danych, MySQL może być skomplikowany i może w każdej chwili przestać stawiać wszystkie Twoje firmy i zadania na szali. Jednak typowe błędy leżą u podstaw większości problemów wpływających na wydajność.

Aby upewnić się, że serwer działa wydajnie i skutecznie, zapewniając stabilną i stałą wydajność, musisz wyeliminować błędy często powodowane przez pewne subtelności w obciążeniu pracą lub pułapce konfiguracji.

Wraz ze wzrostem ilości danych staje się ona coraz bardziej złożona. Dlatego niezbędna jest dobra optymalizacja baz danych, aby zapewnić wydajne środowisko użytkownika końcowego. Dostrajanie wydajności MySQL jest najlepszym rozwiązaniem, ponieważ pomoże rozwiązać te problemy z bazą danych.

Dostrajanie wydajności MySQL

W tym artykule znajdziesz przydatne wskazówki dotyczące dostrajania wydajności MySQL. Pomoże Ci to uzyskać najlepszą wydajność z Twojego MySQL.

Krok 1:Nie używaj MySQL jako kolejki

Bez Twojej wiedzy, kolejki i wzorce przypominające kolejkę mogą wkraść się do Twojej aplikacji. Typowym przykładem jest oznaczanie wiadomości e-mail jako niewysłanych, wysyłanie ich, a następnie oznaczanie ich jako wysłanych. jest to powszechny, ale rzadko niezauważalny problem, który większość użytkowników ignoruje.

Powodują dwie główne komplikacje wydajności:

  1. Serializują obciążenie, zapobiegając w ten sposób wykonywaniu zadań w kolejności równoległej. Ponadto często skutkują one tabelą zawierającą dane dotyczące pracy w toku oraz dane historyczne z zadań, które zostały przetworzone dawno temu. To generalnie spowalnia szybkość przetwarzania i proces.
  2. Obie dodają opóźnienia do aplikacji i ładują się do MySQL.

Krok 2:Sprofiluj swoje obciążenie

Profilowanie obciążenia jest niezbędne, ponieważ pomaga zrozumieć, jak działa serwer i czas, jaki spędza na przetwarzaniu zadań. Najlepszym narzędziem, które Ci w tym pomoże, jest analizator zapytań MySQL Enterprise Monitors z zestawu narzędzi Percona.

Uwaga: Dostępne tylko dla użytkowników Linuksa

Narzędzia mogą przechwytywać zapytania wykonywane przez serwer i zwracać tabelę posortowanych zadań w celu zmniejszenia kolejności czasu odpowiedzi.

Profilowanie obciążenia ujawnia najdroższe zapytania do dalszego dostrajania. Czas jest najbardziej krytyczny, ponieważ ważne jest, jak szybko kończy się wysyłanie zapytania.

Narzędzia do profilowania grupują również podobne zapytania, co pozwala zobaczyć wolne zapytania i te szybkie, ale są wykonywane wiele razy.

Krok 3:Zrozumienie czterech podstawowych zasobów

Procesor, pamięć, dysk i sieć to cztery podstawowe zasoby potrzebne do funkcjonowania bazy danych. Dlatego baza danych prawdopodobnie będzie działać słabo, jeśli którykolwiek z tych zasobów jest przeciążony, słaby lub niekonsekwentny.

Zawsze powinieneś upewnić się, że wszystkie wymienione cztery zasoby są silne i stabilne, aby MySQL działał bezbłędnie. Organizacje zwykle wybierają te serwery z szybkimi procesorami i dyskami, które mogą pomieścić więcej gniazd pamięci.

Dodanie pamięci to tani i łatwy sposób na zwiększenie wydajności o rzędy wielkości, zwłaszcza w przypadku obciążeń związanych z dyskami. Może się to wydawać nierozsądne, ale wiele dysków jest nadmiernie wykorzystywanych, ponieważ nie ma wystarczającej ilości pamięci do przechowywania roboczego zestawu danych serwera.

Podczas rozwiązywania problemów należy dokładnie sprawdzić wydajność i wykorzystanie wszystkich czterech zasobów, aby określić statystyki wydajności czterech zasobów. Monitorowanie ich wydajności jest ważne, ponieważ pomaga użytkownikowi wiedzieć, co należy poprawić lub co wymaga wymiany. Możesz wypróbować tę metodę, ponieważ jest to jedna z najszybszych metod rozwiązywania problemów z wydajnością w MYSQL.

Krok 4:Filtruj wyniki według najtańszego pierwszego

Doskonałym sposobem na optymalizację jest wykonanie najpierw taniej, nieprecyzyjnej pracy, a następnie ciężkiej, precyzyjnej pracy na mniejszych, co skutkuje zbiorem danych.

Przykład:

Załóżmy, że szukasz czegoś w określonym promieniu punktu geograficznego. Pierwszym narzędziem w przyborniku mojego programisty jest wzór Haversine {Wielki okrąg} do obliczania odległości wzdłuż powierzchni kuli.

Problem z tą techniką polega na tym, że formuła wymaga wielu operacji trygonometrycznych, które są bardzo wrażliwe na procesor. W rezultacie obliczenia mają tendencję do powolnego działania i sprawiają, że wykorzystanie procesora maszyny gwałtownie rośnie.

Przed użyciem formuły zmniejsz swoje rekordy do małego podzbioru sumy i przytnij wynikowy zestaw do dokładnego okręgu. Kwadrat zawierający okrąg, precyzyjnie lub nieprecyzyjnie, jest łatwym sposobem na zrobienie tego. Dzięki temu świat poza placem nigdy nie zostanie uderzony tymi wszystkimi kosztownymi funkcjami trygonometrycznymi.

Krok 5:Poznanie i zrozumienie dwóch śmiertelnych pułapek skalowalności.

Skalowalność może nie być tak niejasna, jak wielu uważa. Zamiast tego istnieją precyzyjne matematyczne definicje skalowalności wyrażone w postaci równań, które podkreślają, dlaczego systemy nie skalują się tak dobrze, jak powinny.

Uniwersalne prawo skalowalności to definicja przydatna przy wyrażaniu i określaniu ilościowym cech skalowalności systemów. Wyjaśnia problemy ze skalowaniem w zakresie serializacji i przesłuchów, które są dwoma podstawowymi kosztami.

Procesy równoległe, które muszą się zatrzymać, aby coś zserializowanego miało miejsce, są z natury ograniczone pod względem skalowalności. Ponadto, jeśli równoległe procesy muszą komunikować się ze sobą w celu skoordynowania swojej pracy, ograniczają się nawzajem. Dlatego lepiej jest unikać serializacji i przesłuchów, aby umożliwić szybkie i wydajne skalowanie aplikacji.

Krok 6:Nie skupiaj się zbytnio na konfiguracji

Ludzie spędzają zbyt dużo czasu na dopracowywaniu konfiguracji. Wynik zwykle nie jest znaczącą poprawą i czasami może być bardzo szkodliwy. Domyślne ustawienia dostarczane z MySQL to jeden rozmiar nie pasuje do żadnego i są bardzo przestarzałe, nie musisz niczego konfigurować.

Dlatego niezbędne jest prawidłowe opanowanie podstaw i zmiana ustawień tylko w razie potrzeby. W wielu przypadkach narzędzia do strojenia serwerów nie są zalecane, ponieważ mogą wprowadzać użytkowników w błąd, podając sprzeczne informacje. Niektóre mają zakodowane niebezpieczne, niedokładne porady, takie jak współczynniki trafień w pamięci podręcznej i formuły zużycia pamięci.

Krok 7:Uważaj na zapytania dotyczące stronicowania

Aplikacje, które stronicują, zwykle rzucają serwer na kolana. Optymalizacje często można znaleźć w samym innym interfejsie użytkownika. Na przykład zamiast pokazywać dokładną liczbę stron w wynikach i linkach, możesz wyświetlić tylko link do strony zawierającej te informacje. W ten sposób możesz zapobiec przeciążaniu oryginalnej strony przez inne osoby.

Po stronie zapytania, zamiast używać przesunięcia z limitem, można wybrać jeszcze jeden wiersz, a po kliknięciu „następna strona” można wyznaczyć ten ostatni wiersz jako punkt początkowy następnego zestawu wyników.

Krok 8:skwapliwie zapisuj statystyki, niechętnie ostrzegaj

Alerty i monitorowanie są niezbędne, ale typowy system monitorowania zaczyna wysyłać fałszywe alarmy. Administratorzy systemów konfigurują reguły filtrowania poczty e-mail, aby zatrzymać hałas, i wkrótce system monitorowania staje się bezużyteczny.

Ważne jest, aby uchwycić i zapisać wszystkie możliwe metryki, ponieważ będziesz zadowolony z ich posiadania, gdy spróbujesz dowiedzieć się, co zmieniło się w systemie. Ponadto, gdy pojawi się dziwny problem, będziesz mógł wskazać wykres i łatwo prześledzić zmianę obciążenia serwera.

Ludzie zwykle ostrzegają o takich rzeczach, jak współczynnik trafień bufora lub liczba tabel tymczasowych tworzonych na sekundę. Problem w tym, że nie ma rozsądnego progu takiego wskaźnika. Co więcej, odpowiedni próg różni się w zależności od serwera i od czasu do czasu, gdy zmienia się Twoja praca.

W rezultacie ostrzegaj oszczędnie i tylko w warunkach, które wskazują na określony, możliwy do rozwiązania problem. Na przykład niski współczynnik trafień bufora nie jest możliwy do wykonania, ani nie wskazuje na prawdziwy problem, ale serwer, który nie odpowiada na próbę połączenia, jest rzeczywistym problemem, który należy rozwiązać.

Krok 9:Poznaj trzy zasady indeksowania

Jest to najbardziej niezrozumiany temat w bazach danych, ponieważ istnieje wiele sposobów, aby dowiedzieć się, jak działają indeksy i jak serwer z nich korzysta. Indeksy, jeśli są odpowiednio zaprojektowane, służą trzem ważnym celom na serwerze bazy danych;

  1. Zamiast pojedynczych wierszy, indeksy umożliwiają serwerowi znajdowanie grup sąsiednich wierszy. Wiele osób uważa, że ​​celem indeksów jest znalezienie pojedynczych wierszy, ale znalezienie pojedynczych wierszy prowadzi do losowych operacji dyskowych, co powoduje, że serwer działa bardzo wolno. Znajdowanie grup wierszy jest znacznie lepsze i interesujące niż znajdowanie wierszy pojedynczo.
  2. Pozwala to również serwerowi uniknąć sortowania poprzez odczytywanie wierszy w żądanej kolejności. Odczytywanie wierszy, w przeciwieństwie do sortowania, jest znacznie szybsze i mniej kosztowne.
  3. Indeksy pozwalają również serwerowi na zaspokojenie całych zapytań z samego indeksu, eliminując w ogóle potrzebę dostępu do tabletu. Jest to różnie znane jako indeks Covey lub zapytanie zawierające tylko indeks.

Krok 10:Wykorzystaj wiedzę swoich współpracowników

Czy nie miałbyś nic przeciwko zrobieniu tego sam? Zastanawianie się nad problemami i robienie tego, co wydaje ci się logiczne i rozsądne, może działać najwięcej, ale nie przez cały czas. Zamiast tego zbuduj sieć zasobów związanych z MySQL, wykraczającą poza zestawy narzędzi i przewodniki dotyczące rozwiązywania problemów.

Ludzie są niezwykle kompetentni, czają się na listach mailingowych, forach i tak dalej. Ponadto konferencje, targi i wydarzenia dla lokalnych grup użytkowników zapewniają cenne możliwości uzyskania wglądu i budowania relacji z rówieśnikami, którzy mogą Ci pomóc.

Dla nielicznych, którzy szukają narzędzi uzupełniających te wskazówki, możesz skorzystać z Kreatora konfiguracji Percona dla wtyczek monitorujących MySQL i MySQL Percona.

Kreator konfiguracji może pomóc w wygenerowaniu planu bazowego. plik my.cnf dla nowego serwera, lepszy od przykładowych plików dostarczanych z serwerem.

Doradca zapytań, który jest lepszy od przykładowych plików dostarczanych z serwerem. Doradca przeanalizuje Twój kod SQL, aby pomóc wykryć potencjalnie destrukcyjne wzorce, takie jak zapytania dotyczące paginacji (wskazówka 7).

Wtyczki monitorujące Percona to zestawy wtyczek monitorujących i do tworzenia wykresów, które pomagają gorliwie zapisywać statystyki i niechętnie ostrzegają (Krok 8). Wszystkie te narzędzia są dostępne bezpłatnie.

Zalety dostrajania wydajności

Podstawową korzyścią jest to, że pozwala uniknąć nadmiernej alokacji i obniżyć koszty poprzez odpowiednie dobranie rozmiaru usług. Daje również wgląd w to, czy przeniesienie pamięci masowej danych lub dodanie pojemności serwera poprawi wydajność, czy nie, a jeśli tak, to ile to będzie.

Poprawnie dostrojona baza danych zapewnia korzystne wyniki wydajności z doskonałymi funkcjami. Nie tylko zmniejsza obciążenie niepożądanego zadania, ale także optymalizuje bazę danych MySQL w celu szybszego wyszukiwania danych.

Inne ustawienia mogą mieć znaczenie w zależności od obciążenia lub sprzętu. Celem jest umożliwienie kilku dostrojenia wydajności MySQL, aby szybko uzyskać rozsądną konfigurację MySQL bez poświęcania zbyt wiele czasu na zmienianie niepodstawowych ustawień lub czytanie dokumentacji, aby zrozumieć, które ustawienia są dla Ciebie ważne.

Wniosek

Podsumowując, dostrajanie wydajności oferuje wiele korzyści i jest zalecane podczas pracy z dużymi połaciami danych w celu poprawy wydajności serwera. Postępując zgodnie ze wskazówkami podanymi w tym artykule, będziesz mógł wygodnie przeprowadzić dostrajanie wydajności MySQL na swoim serwerze i bazach danych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak wdrożyć Percona Server dla MySQL w celu zapewnienia wysokiej dostępności

  2. mySQL Zwraca top 5 z każdej kategorii

  3. Grupuj zapytania mysql co 15 minut

  4. MySQL - AKTUALIZUJ wiele wierszy z różnymi wartościami w jednym zapytaniu

  5. Przykład wiosennego rozruchu CRUD z MySQL