Mam kilka serwerów rozmieszczonych na całym świecie. Działają w systemie Windows 2003 x64 z SQL Server 2005 x64 z 6 GB pamięci RAM. Pudełka nie mają najlepszej (ani nawet akceptowalnej) konfiguracji, ponieważ facet, który zamówił je lata temu, tak naprawdę nie wiedział, co robi.
W pudełkach zaczyna brakować pamięci, w końcu używa pliku stronicowania i wszystko zwalnia. Zazwyczaj opłata za zatwierdzenie wynosi 5,8 GB, a następnie, gdy ktoś musi zrobić coś intensywnego (np. Uruchomić raport), ta liczba przechodzi przez dach.
Próbowałem zdobyć moce, które nakazują zwiększenie ilości pamięci, ale mam ogromny sprzeciw (np. Zwiększenie wydajności oprogramowania, zbyt wysokie koszty dla wszystkich serwerów lub udowodnienie, że pudełko nie ma wystarczającej ilości pamięci itp. ..).
Czy istnieją wytyczne (lub formuła) określające, ile pamięci RAM potrzebuje urządzenie, które mogę przedstawić innym użytkownikom, abyśmy mogli w końcu zamówić więcej pamięci?
źródło
Odpowiedzi:
Naprawdę nie jest to żaden sposób, aby łatwo to stwierdzić, ponieważ jest to całkowicie zależne od twojego użycia i aplikacji. Maksymalnie wykorzystujesz serwer bazy danych ... jak duża jest baza danych? Jakie są twoje statystyki transakcji?
Rzeczywiste ograniczenia są oczywiste w twoim scenariuszu. Biegasz przez jakiś czas na 6 koncertach bez problemu, potem to zamiana i thrashowanie. Zatem 6 koncert to za mało.
Jeśli wydajność jest wystarczająca, aby mieć wpływ na biznes, to twoi wyżsi przełożeni powinni słyszeć wystarczająco dużo skarg, że rozsądnie jest zwiększyć pamięć. Sprawdź, ile kosztuje Twój czas, a następnie dowiedz się, ile będzie kosztowało „dostrojenie” serwera i rozwiązywanie problemów z dostrajaniem, gdy pamięć dodana do serwera może bardzo dobrze rozwiązać problem kosztu pamięci i mniej niż pół godziny przestoje
Nie poznasz dokładnej ilości potrzebnej pamięci, dopóki nie wdrożysz jej w rzeczywistości i nie zaczniesz z niej pracować.
To powiedziawszy, możesz chcieć sprawdzić, czy twoje zgłoszenie jest naprawdę wąskim gardłem. Uruchom monitor wydajności systemu Windows, aby zobaczyć statystyki we / wy dysku i przepustowość sieci. Sprawdź również swój poziom fragmentacji ( Google jest tutaj dobrym przyjacielem ). Możesz spróbować skontrolować kod pod kątem oczywistych problemów, w których zapytanie jest bardzo nieefektywne ( ponownie Google ).
Ale znowu wszystko zależy od tego, jak bardzo wpłynie to na biznes. Czy warto więcej zainwestować w strojenie, czy też jest wystarczająco zły, aby najpierw rzucić na niego sprzęt, a następnie spróbować go dostroić?
źródło
Łatwym sposobem sprawdzenia, czy potrzebujesz więcej pamięci RAM, jest zobrazowanie licznika perfmon Page Life Expectancy. Ten licznik informuje, jak długo SQL Server myśli, że dane będą przechowywane w puli buforów, zanim będzie trzeba zrobić miejsce dla innych danych. Chcesz, aby ta liczba była jak najwyższa. Przy zainstalowanych 6 gigabajtach pamięci RAM (powinieneś ustawić SQL na maksymalny limit na prawdopodobnie 4 gigabajty) prawdopodobnie będziesz przechowywać dane w pamięci maksymalnie przez kilka minut, gdy ktoś uruchomi duży raport, zobaczysz ten numer zbiornika do kilku sekund. Im więcej masz pamięci RAM, tym dłużej dane mogą być przechowywane w pamięci i tym mniej trzeba będzie czytać z dysków.
Na przykład systemy, z którymi obecnie pracuję, mają 256 GB pamięci RAM i przechowujemy dane w pamięci przez około 12000 sekund.
Proszę nie prosić o wybranie numeru docelowego, po prostu chcesz, aby liczba była jak najwyższa. Nie wiedząc dużo więcej o twoich systemach, nie mogę podać dobrej liczby, na którą można strzelać.
źródło
Hmmmm Cóż, 6 koncertów to niezła ilość pamięci RAM, nawet dla dużej instalacji MSSQL. Możesz naprawdę sprawdzić i upewnić się, że Twój kod jest naprawdę wydajny. Transakcja 6 gig jest trochę niezwykła ... Pracowałem nad ogólnopolskimi systemami płac, które nie przebiły koncertu pod koniec roku 1099 ... I żeby jeden działał często ? Nie wiem Z jakiego rodzaju danymi pracujesz?
To powiedziawszy, możesz włożyć tyle pamięci RAM, ile chcesz w 64-bitowym pudełku, a ram jest tani jak brud, więc równie dobrze możesz umieścić tam tyle, ile możesz ... Naprawdę nie mogę mieć zbyt dużo pamięci RAM serwer bazy danych.
Edycja: To jest teraz bardzo nieaktualne. Mam pudełka MSSQL z 256 gigabajtami pamięci RAM.
źródło
Zanim rzucisz się na zakup większej ilości pamięci (lub jakiegokolwiek innego komponentu), zaleciłbym przeprowadzenie analizy wydajności na serwerze. Możesz to zrobić samodzielnie za pomocą perfmon lub możesz skorzystać z narzędzi innych firm. Powinieneś przeanalizować wydajność zarówno systemu operacyjnego, jak i serwera SQL. IMHO, zbyt często jesteśmy gotowi rzucić sprzęt na problem, zanim zostanie przeprowadzona odpowiednia analiza. Z tego, co wiesz w tym momencie, może to być problem z zapytaniem, procedurą składowaną, planem wykonania, dyskowymi operacjami wejścia / wyjścia, wykorzystaniem procesora itp. Itp. Ciśnienie pamięci może często być objawem innego wąskiego gardła w systemie.
źródło
jak powiedział „Satanicpuppy”, nie ma czegoś takiego jak zbyt dużo pamięci RAM, ale 6 GB powinno być w porządku, może powinieneś przemyśleć, co robi twój serwer, nie sądzę, że masz problem ze sprzętem, powinieneś skup się na programowaniu SQL ...
źródło
Jeśli chodzi o serwery baz danych, nie ma czegoś takiego jak „wystarczająca” pamięć. Oczywiście, zależy to od tego, co faktycznie robią i działają, ale jeśli jest to stale używana baza danych zawierająca dużo danych i wykonująca skomplikowane zapytania - 6 GB może być rażąco niewystarczające.
Zacznę od uaktualnienia jednego kłopotliwego serwera do co najmniej 32 lub 64 GB i zobaczę, czy to pomoże. Jeśli nie, przejdź do dostrajania bazy danych, rozwiązywania problemów z aplikacjami i debugowania - co wszystko, chyba że idiota zaprojektował bazę danych, kosztuje znacznie więcej niż kilka pamięci klasy serwerowej (a nawet jeśli idiota to zaprojektował, uzyskując nawet oczywisty projekt błędy naprawione przy zachowanym wsparciu mogą okazać się sporym wyzwaniem).
To powiedziawszy, jak ktoś inny stwierdził - może to być coś innego, co powstrzymywałoby go (oprócz problemów z projektowaniem oprogramowania), np. Brak wydajności dysku lub sieciowego wejścia / wyjścia - zatrudnienie DBA pro, aby przejść podstawowe monitorowanie wydajności SQL dla dzień może się przydać.
źródło
Powinieneś spojrzeć na budowanie większej liczby indeksów. Myślę, że generalnie większość osób zaniża indeks swoich baz danych.
To wciąż kod lotniczy, jeszcze nie przetestowałem go w pełni, ale powinien on poprowadzić Cię we właściwym kierunku
http://accessadp.com/2011/08/22/missing-indexes-great-script-for-determining-roi/
źródło