... miałem nadzieję, że uda mi się ... z grubsza oszacować, co powinniśmy biegać.
Bez dodatkowych informacji o zapytaniach i rozmiarach danych naprawdę trudno jest podać jakiekolwiek oszacowanie, a co dopiero dokładne oszacowanie.
Baza danych: baza danych SQL Server 2008 R2 dla przedsiębiorstw
Windows: Windows 2008 R2 Enterprise 64 bit, całkiem pewne, że działa na VMware.
Procesor: Intel (R) Xeon (R) CPU E7-4860 @ 2,27 GHz 2,26 GHz (2 procesory)
Zainstalowana pamięć: 4 GB
Dwa procesory (zakładam, że jest to widoczne w maszynie wirtualnej jako 2 rdzenie) mogą, ale nie muszą być niedostarczone. Rdzenie przypisane do maszyny Wirtualnej niekoniecznie są mapowane bezpośrednio na rdzenie fizyczne (lub nawet pozwalają na użycie 100% jednego rdzenia, gdy jest to potrzebne!), Więc może się okazać, że jest to bardziej elastyczny zasób niż pamięć. Bez żadnych dodatkowych informacji na temat obciążenia lub konfiguracji sprzętu / wirtualizacji powiedziałbym, że zwiększenie tego poziomu do 4 byłoby przyjemne.
Przydział pamięci. O chłopie. Jest to rażąco niedostarczone na obciążenie pracą. Sam system Windows potrzebuje minimum 2-3 GB, aby być zadowolonym, a każdy z 2 użytkowników korzystających z BIDS na urządzeniu będzie wymagał co najmniej 500 MB. I dzięki temu pudełko jest już maksymalne i nawet nie zacząłem zastanawiać się, ile bazy danych będzie potrzebować.
Większość użytkowników wchodzi w interakcję z bazą danych za pośrednictwem strony asp.net i witryny serwera raportów.
Nie powiedziałeś, ale jeśli są uruchomione na tym samym urządzeniu, należy również wziąć pod uwagę wymagania dotyczące pamięci.
Wreszcie, mamy dość zaangażowaną operację hurtowni danych, która prawdopodobnie przynosi 3 miliony rekordów dziennie dzięki pakietom SSIS, które również działają na serwerze.
Zakładając, że działa to w nocy, gdy w systemie nie ma aktywnych użytkowników, nie widzę w tym problemu, chyba że uruchomienie go potrwa zbyt długo. Ta część rzeczy jest najmniejszym z twoich zmartwień; użytkownicy na żywo są ważniejsi.
Nasze poprzednie prośby o dodatkową pamięć zostały odrzucone ze wspólną odpowiedzią, że musimy przeprowadzić więcej optymalizacji zapytań.
Jak wykazałem powyżej, bieżąca ilość pamięci, która została zainicjowana, jest całkowicie nieodpowiednia. Jednocześnie jednak, na drugim końcu spektrum, jest bardzo mało prawdopodobne, że będziesz w stanie uzyskać wystarczającą ilość pamięci, aby utrzymać całą bazę danych w pamięci jednocześnie.
Mimo że otrzymałeś taką ogólną odpowiedź (która, nawiasem mówiąc, prawdopodobnie miała więcej wspólnego z tym, jak przekonujące było twoje uzasadnienie dla dodatkowych zasobów, a nie samo faktyczne wykorzystanie zasobów), wysoce prawdopodobne jest, że wydajność bazy danych może być ulepszony. Jednak samo dostrojenie nie może rozwiązać problemów, które występują obecnie; Sugestia tego jest dla mnie kompletna.
Przyjęłbym ogólne podejście, że ilość obecnie udostępnianej pamięci jest niższa niż wymagane minimum (które należy poprawić jak najszybciej), i mogą być wymagane dodatkowe zasoby, aby poprawić wrażenia użytkownika do użytecznego poziomu, podczas gdy ulepszenia mają na celu zwiększenie wydajności systemy.
Oto kilka myśli (w kolejności ataku):
Będziesz wygrać , jeśli można udowodnić, jak bardzo poprawia wydajność za każdym razem można dostać więcej środków zabezpieczony. Śledź wskaźniki wydajności za pomocą rejestrowania Monitora wydajności (uwaga: część rejestrowania jest bardzo ważna), w tym czasy reakcji witryny, jeśli możesz. Zacznij to robić teraz , zanim zrobisz cokolwiek innego. Kiedy w końcu osiągniesz minimalną ilość pamięci (nie dostaniesz od razu 32 GB), nagle masz teraz dowody, że dodana pamięć poprawiła rzeczy ... co oznacza, że dodanie jeszcze większej ilości prawdopodobnie również by pomogło! Jeśli nie zbierzesz linii bazowej w bieżącej konfiguracji, będziesz tęsknił za łodzią, gdy rzeczy spadną do minimalnego zalecanego poziomu.
Przeanalizuj statystyki oczekiwania serwera . Dzięki temu dowiesz się, jakie jest największe wąskie gardło w systemie. Prawdopodobnie będziesz mieć PAGEIOLATCH_XX
najczęstszy / najwyższy czas oczekiwania, co oznacza, że zrobiono zbyt wiele operacji we / wy, aby pobrać strony z dysku. Można to złagodzić poprzez dodanie pamięci, więc fizyczne operacje we / wy stają się mniej częste, ponieważ potrzebne dane są już w pamięci. Chociaż ta analiza jest prawie przesądzona, fakt, że zebrałeś te statystyki, daje ci więcej amunicji, uzasadniając zapotrzebowanie na zasoby.
Jak wspomniałem powyżej, absolutne minimalne wymagania dotyczące pamięci nie są spełnione. Zbierz zestaw zalecanych wymagań sprzętowych dla całego uruchomionego oprogramowania, a może także zrób zrzuty ekranu Menedżera zadań. Samo to powinno wystarczyć, aby uzasadnić na miejscu co najmniej 4-8 GB więcej. Jeśli nadal odmawiają, spróbuj ich przekonać, aby pozwolili ci na wypróbowanie go przez tydzień, i oddaj go później (zbierasz statystyki wydajności, więc nie musisz go oddawać, ponieważ w połowie tygodnia „ Będę w stanie udowodnić, jak bardzo to poprawiło sytuację). Jeśli nadal odmawiają, jesteś nastawiony na porażkę; URLT .
Jeśli możesz odciążyć część obciążenia (w szczególności, jeśli to możliwe, unikaj przenoszenia na odległość), zwiększy to ilość pamięci dostępnej dla bazy danych, co jest bardziej krytyczne.
Nie będziesz w stanie jednocześnie zmieścić całej bazy danych w pamięci, co oznacza, że musisz bardzo ostrożnie ustawić maksymalne ustawienie pamięci SQL Server, aby zapobiec nadmiernemu zatwierdzeniu pamięci , co zabija wydajność jak nic innego . Nadmierne zatwierdzenie jest nawet gorsze niż po prostu niemożność zmieszczenia wszystkich danych w pamięci. Jest wysoce prawdopodobne, że jesteś teraz w tym scenariuszu po prostu dlatego, że po prostu w ogóle nie ma dostępnej pamięci i prawdopodobne jest, że ustawienie maksymalnej pamięci jest ustawione na wartość domyślną (nieograniczoną).
Ponieważ korzystasz z SQL Server Enterprise Edition, a pamięć jest na wagę złota, zdecydowanie rozważę wdrożenie kompresji danych . Spowoduje to zmniejszenie zużycia procesora w celu zaoszczędzenia miejsca w pamięci (a tym samym zmniejszenie dostępu do dysku, które są stosunkowo bardzo wolne).
Dostrój bazę danych. Prawdopodobnie w strukturach i zapytaniach można zastosować ulepszenia w zakresie wzorców indeksowania i dostępu. Ponadto, jeśli wiele danych jest często skanowanych i agregowanych, tworzenie indeksowanych widoków, tabel podsumowań lub wstępnie obliczonych raportów może być bardzo pomocne.
Może to być długi cel, ponieważ prawdopodobnie oznacza to więcej udostępniania sprzętu, ale zaimplementuj rozwiązanie buforowania. Najszybsze zapytanie jest tym, którego nigdy nie wykonałeś .
To tylko kilka pomysłów. Najważniejsze jest to, że samo strojenie nie rozwiąże tutaj problemów, podobnie jak sam sprzęt, chociaż ten ostatni prawdopodobnie złagodzi większość bezpośrednich problemów. Tak to naprawdę wygląda: rzuć sprzęt na problem w krótkim czasie, aby ugasić pożar, i rzuć tunel na problem w perspektywie długoterminowej, aby naprawić podstawową przyczynę najlepiej, jak potrafisz.