Niska wydajność serwera MySql - co i jak sprawdzić?

10

start: wyłączenie odpowiedzialności

Nie jestem serwerem MySql DBA; Znam głównie MSSQL - dlatego potrzebuję twojej pomocy.

koniec: wyłączenie odpowiedzialności

Poproszono mnie o sprawdzenie, dlaczego silnik serwera MySql działa słabo - nie widziałem ani nie zatrzymałem zaangażowanych baz danych i chciałbym wiedzieć, od czego zacząć.

Gdzie zaczynam?

Jakie pytania powinienem zadawać tym, którzy mają dostęp do MySql - nawet nie wiem, czy używają phpmyadmin lub innego narzędzia.

Głównie:

  • O jakie przedmioty mam prosić i jak mam odpowiedzieć na każdy kawałek, który dają?

O jakie kluczowe elementy należy zapytać, kiedy problem dotyczy wydajności bazy danych?

w MSSQL mogę sprawdzić sp_who2istniejące połączenia, aby zobaczyć, czy coś blokuje, jaki jest odpowiednik w mysql? * nie muszą być szczegółowe, ponieważ dla każdego elementu może być wiele rodzajów wyników, ale chciałbym pomóc w uruchomieniu kuli, ponieważ wpływa ona na użytkowników - najwyraźniej ustawili silnik mysql bez posiadania dba na pokładzie.

Yasker Yasker
źródło
Czy sprawdziłeś typowe problemy z zasobami - pełny procesor, pełna / nieużywana pamięć RAM, przeciążenie IO? 101 rzeczy, od których zaczynasz na serwerze SQL?
TomTom
Nie miałem okazji - chcę być przygotowany, kiedy tylko wejdę, aby wszystko się poruszało - możliwe, że ludzie na miejscu już sprawdzili i zarówno z aplikacjami, jak i serwerami db o wysokich specyfikacjach (firma splurged) chciałby się skupić na tym, co się stanie, jeśli sprzęt nie stanowi problemu
Yasker Yasker
Z doświadczenia - zacznij od tego. Widziałem „zaawansowane serwery” z jednym dyskiem twardym SCSI (które musiały wycofać się z aukcji w serwisie eBay), które miały wiele sekund czasu reakcji… Sprawdziłbym stronę IO. Pomoże również - zbyt wiele IO może wskazywać na brakujące indeksy, jeśli liczby są po prostu całkowicie śmieszne.
TomTom

Odpowiedzi:

9
  • Rejestruj wolne zapytania - jeśli twój system ma mnóstwo zapytań, trudniej jest dowiedzieć się, które zapytania spowalniają Twój system. MySQL zapewnia narzędzie do rejestrowania wolnych zapytań do dalszej analizy http://dev.mysql.com/doc/refman/5.0/en/slow-query-log.html

  • EXPLAIN Rozszerzone polecenie pokazuje szczegóły dotyczące twoich zapytań, gdy nie masz pojęcia, co się dzieje http://dev.mysql.com/doc/refman/5.0/en/explain-extended.html

  • Aby przyspieszyć zapytania, skorzystaj z indeksu - dobrą praktyką jest dodawanie indeksu poprzez sprawdzenie, które pola znajdują się w klauzuli WHERE, dodawanie indeksu dla nich. Również jeśli pobierasz wszystkie pola z tabeli, zapytanie staje się wolniejsze przez pobieranie wszystkich danych z dysku. W zapytaniu SELECT należy określić, które pola należy przynieść, aby połączyć je wszystkie za pomocą *
  • Skorzystaj z bufora zapytań http://dev.mysql.com/doc/refman/5.1/en/query-cache-configuration.html
  • Upewnij się, że opcje pliku konfiguracyjnego serwera MySQL są zoptymalizowane zgodnie ze sprzętem http://dev.mysql.com/doc/refman/5.5/en/option-files.html
  • Upewnij się, że używasz zoptymalizowanych typów danych podczas tworzenia struktury tabeli. Na przykład pola „Komentarze” mają rozmiar 256 znaków, odpowiedz na MYSQL za pomocą pola typu VARCHAR (256) zamiast używać TEKSTU. Zapytanie będzie znacznie szybsze.

Procedura_Analyse () może pomóc w znalezieniu optymalnych typów danych:

http://www.mysqlperformanceblog.com/2009/03/23/procedure-analyse/

http://dev.mysql.com/doc/refman/5.0/en/procedure-analyse.html

Mahesh Patil
źródło