Nie w pierwszej trójce, ale pomyślałem, że wspomnę o rzeczach jeszcze nie wymienionych:
- SQL umieszczony na maszynach wirtualnych bez DBA zapewniających szczegóły / przejrzystość. Serwer hosta dynamicznie zmieni ustawienia komputerów-gości, powodując spadek wydajności i pozostawiając DBA bez pojęcia. Funkcje takie jak hipertekst, łączenie w sieć i balonowanie z pamięci sprawiają, że liczniki wydajności są ruchomym celem do monitorowania.
Tools: sysmon/perfmon, DMVs, maintaining a history of performance counters in tables.
- Podobnie brak przejrzystości / możliwości weryfikacji ustawień SAN dostarczonych do DBA. Miałem jednostki LUN z różnymi preferencjami pamięci podręcznej odczytu / zapisu, ale powiedziałem, że wszystkie są takie same.
Tools: IO DMVs, SQLIO.
- Zła architektura DB: jak zmiana rozmiaru i rozmieszczenie danych i plików dziennika oraz tempdb. Niewłaściwe użycie równoległości. Tworzenie wielu aplikacjami na tych samych dyskach fizycznych.
Tools: experience.
Kolejnym narzędziem, które teraz sprawdzam, jest Project Lucy . Wydaje się schludne.
Kwerendy, które źle skalują się (otrzymuj wszystkie zamówienia przez X lat dla wszystkich klientów itp., W tym wszystkie wiersze, w tym dane sumowane i inne dane źle obliczone)
Po prostu odpytuję wszystko naraz.
Tabele zawierające pola opisowe varchar / tekst, które należy przeszukiwać przy każdym zapytaniu.
źródło
źródło
źródło
źródło
źródło
Indeksowanie ma kluczowe znaczenie dla wydajności, ale zauważyłem, że większość DBA wie o tym, więc jest to jedna z pierwszych rzeczy, które można naprawić dzięki optymalizacji zapytań. Obszary, które często nie są dobrze rozwiązane:
Gdybym mógł dodać czwarty element do listy, byłoby to nadmierne i niewłaściwe użycie wyzwalaczy i / lub kursorów. W dzisiejszych czasach nie wydaje się to zbyt częste, ale kiedy tak się dzieje, jest bolesne z punktu widzenia wydajności.
źródło