„Najlepsze praktyki” to:
- wydajność Measure, izolowanie odnośnego podsystemu, jak to tylko możliwe.
- Zidentyfikować podstawową przyczynę wąskiego gardła. Czy jesteś związany z I/O? CPU jest związany? Pamięć jest związana? Czekam na zamki?
- Wprowadź zmiany, aby złagodzić pierwotną przyczynę, którą odkryłeś.
- Zmierz ponownie, aby zademonstrować, że naprawiono wąskie gardło i o wartości.
- Przejdź do kroku 2 i powtórz, jeśli to konieczne, aż system działa wystarczająco szybko.
Subskrybuj kanał RSS pod numerem http://www.mysqlperformanceblog.com i zapoznaj się z jego artykułami historycznymi. To bardzo przydatne źródło mądrości związanej z wydajnością. Na przykład zapytałeś o InnoDB vs. MyISAM. Ich wniosek: InnoDB ma średnio o 30% wyższą wydajność niż MyISAM. Chociaż istnieje również kilka scenariuszy użycia, w których MyISAM osiąga lepsze wyniki niż InnoDB.
autorzy tego bloga są również współautorami "High Performance MySQL" książki wspomnianej przez @Andrew Barnett.
Re komentarz z @ ʞɔıu: Jak stwierdzić, czy jesteś I/O związany kontra CPU związany versus pamięci związany jest zależne od platformy. System operacyjny może oferować takie narzędzia, jak ps, iostat, vmstat lub top. Lub może być konieczne uzyskanie narzędzia innej firmy, jeśli system operacyjny go nie obsługuje.
Zasadniczo, niezależnie od tego, który zasób jest ustalony przy 100% wykorzystania/nasycenia, prawdopodobnie będzie to wąskie gardło. Jeśli obciążenie procesora jest małe, ale obciążenie we/wy jest maksymalne dla sprzętu, oznacza to, że jest on powiązany we/wy.
To tylko jeden punkt danych. Środek zaradczy może również zależeć od innych czynników. Na przykład złożona kwerenda SQL może wykonywać polecenie filesort, co powoduje, że operacje we/wy są zajęte. Czy powinieneś wrzucić więcej/szybszy sprzęt, czy przeprojektować zapytanie, aby uniknąć plików?
Podsumowaniem jest zbyt wiele czynników w poście StackOverflow, a fakt, że istnieje wiele książek na ten temat, obsługuje to.Prowadzenie sprawnej pracy baz danych i optymalne wykorzystanie zasobów to praca w pełnym wymiarze godzin, wymagająca specjalistycznych umiejętności i stałego studiowania.
Jeff Atwood po prostu napisał piękny wpis na blogu o znalezienie wąskich gardeł w systemie:
Jednym wielkim powodem do działania z silnikiem INNODB - jest obsługa transakcji. MyIsam nie obsługuje tego. Jeśli zależy Ci na integralności danych (tak jak powinno :)) - po prostu nie ma innej drogi.nie ma sposobu, aby niezawodnie wycofać sekwencję sql, jeśli nie używasz transakcji i coś złego stało się jak awaria zasilania. – Stann