SQL Server 2K / 2K5 / 2K8 i dyski SSD: konkretne optymalizacje?

9

Czy ktoś tutaj używa programu SQL Server na dyskach półprzewodnikowych? Czy znalazłeś jakieś konkretne wskazówki dotyczące optymalizacji? Szczególnie interesują mnie sposoby zmniejszenia częstotliwości, z jaką SQL Server wykonuje małe losowe operacje zapisu, ponieważ są one nemezis wydajności dysków SSD, szczególnie dysków MLC SSD.

Istnieją oczywiście oczywiste optymalizacje, które można wykonać: dane wymagające dużej ilości odczytu powinny być podawane z dysku SSD, a rzeczy wymagające dużej ilości zapisu należy pozostawić tradycyjnym wirującym dyskom. Obejmuje to oczywiście dzienniki transakcji!

Biorąc pod uwagę wystarczający budżet, oczywiście chciałoby się używać dysków SLC SSD, takich jak seria X25-E lub Vertex Ex, lub różnych ofert na poziomie korporacyjnym. Ale interesują mnie również wskazówki, które mogą przynieść korzyści dla konfiguracji MLC SSD. Myślę, że to interesujący obszar. Jeden z klientów moich klientów ma niewielki budżet i zbiór danych, który ogromnie się powiększył, i czeka ich kompletne przepisanie prawie stu zapytań w celu utrzymania przyzwoitego poziomu wydajności. Mam jednak podejrzane podejrzenie, że mniej niż 500 USD pamięci RAM i SSD może przynieść im większy wzrost wydajności niż tysiące (być może dziesiątki tysięcy) dolarów warte czasu dewelopera.

John Rose
źródło

Odpowiedzi:

3

Nie jestem pewien, co masz na myśli, mówiąc o ograniczeniu liczby małych, losowych zapisów, które robi SQL Server. SQL Server zapisuje strony danych tylko podczas punktów kontrolnych - więc jedynym sposobem ograniczenia liczby zapisów jest zmiana interwału punktu kontrolnego lub rezygnacja z wielu operacji wkładki wewnątrzmacicznej. Miałeś na myśli coś innego?

We wszystkich implementacjach dysków SSD, które widziałem (garstka), jest to coś zupełnie przeciwnego do tego, co sugerujesz - najlepsze wykorzystanie dysków SSD wydaje się być do dzienników transakcji o dużej ilości zapisu i tempdb - w zasadzie gdzie jest największy I Wąskie gardło podsystemu / O i wsuń tam dyski SSD - czas wyszukiwania i opóźnienia są zmniejszane do niskiej stałej.

Zapoznaj się z tym artykułem badawczym opracowanym przez MS (niestety niezbyt szczegółowo opisującym specyfikę SQL Server): Migracja pamięci serwera na dyski SSD: Analiza kompromisów .

Mam nadzieję że to pomoże!

Paul Randal
źródło
Dziękuję za ten link do artykułu MS. Jest frustrująco krótki w szczegółach, prawda? :) Niestety małe losowe zapisy są rzeczywiście czymś, co może pasować do dysków SSD. W skrócie, nawet w przypadku niewielkiego zapisu (np. 4KB) dysk SSD musi wczytać cały blok do pamięci, zmodyfikować go i zapisać ponownie. Tak właśnie działa pamięć flash obecnej generacji. Świetny artykuł na temat SSD: anandtech.com/storage/showdoc.aspx?i=3531&p=1
John Rose
2

Nie można modyfikować właściwości IO serwerów SQL. Podstawową jednostką dostępu do dysku dla plików danych jest strona o wielkości 8 KB. Zapisze je głównie podczas punktu kontrolnego, ale również leniwie je napisze, kiedy będzie to możliwe.
SQL nie czeka na zakończenie zapisu na dysku danych przed zwróceniem, tylko zapisy dziennika muszą zostać zakończone. Jeśli możesz przechowywać tylko jeden dziennik bazy danych na dysku, będzie to sekwencyjny zapis i będzie dobrze na normalnych szybkich dyskach twardych.
Wydajność spadła z punktu widzenia SQL, gdy musi czytać dyski. Jeśli możesz dać mu więcej pamięci, SQL będzie przechowywać więcej stron danych w pamięci, co jest szybsze niż jakikolwiek dysk, dysk SSD lub inny. Oczywiście można również zmniejszyć liczbę odczytów dysku, tworząc odpowiednie indeksy. Oczekuję, że dysk SSD również pomógłby w tych odczytach, ponieważ prawdopodobnie są one losowe i czekają na ruch głowic napędu.
Nie wiem o jakiej wielkości bazy danych mówimy tutaj, ale czy możesz chcieć rzucić okiem na HyperOS. Tworzą dyski sata, które są po prostu obciążeniem pamięci RAM DDR2, z dyskiem SSD lub dyskiem 2,5 cala jako kopią zapasową. Wzorzec dostępu do serwera nie będzie wtedy mieć znaczenia. Jednak nie umieszczałbym dzienników na czymś takim. Dzienniki są tym, co utrzymuje spójność danych, muszą iść na niezawodnym nośniku i pomimo tworzenia kopii zapasowej dysku SSD i baterii, a serwer prawdopodobnie ma zasilacz UPS itp., Nadal nie czułbym się łatwo z powodu braku moich dzienników na prawdziwym dysku twardym w jakiejś macierzy RAID odpornej na awarie.

pipTheGeek
źródło
1

Małe losowe operacje to nemezis tradycyjnych dysków ze względu na opóźnienie poszukiwania przez głowę ... Dyski SSD doskonale nadają się do rozwiązania tego problemu.

Przy długich, sekwencyjnych operacjach standardowe dyski działają całkiem dobrze, więc używanie dysków SSD nie miałoby sensu (oczywiście z punktu widzenia wydajności).

Massimo
źródło
2
Dyski SSD są fantastyczne w operacjach losowego odczytu ze względu na prawie zerowe opóźnienie wyszukiwania. Są mniej zręczne w przypadkowych operacjach zapisu, ponieważ operacja zapisu SSD obejmuje odczyt całego bloku flash (zwykle 128 KB), modyfikację zawartości i zapisanie całego bloku z powrotem do flashowania. Jeśli chodzi o długie, sekwencyjne operacje, lepsze dyski SSD na poziomie konsumenckim (Intel, OCZ Vertex, Samsung) osiągają znacznie ponad 200 MB / s odczytów i 80 MB-150 MB zapisów, znacznie powyżej tego, co może wytworzyć pojedynczy wirujący dysk.
John Rose
Jesteś pewny? Nie rozumiem, dlaczego operacja zapisu powinna obejmować odczyt bloku danych przed jego ponownym wypisaniem ... dane do zapisania powinny znajdować się w pamięci komputera, prawda?
Massimo
2
@Massimo: ponieważ system operacyjny zapisuje tylko kilka bajtów, ale dysk SSD działa w jednostkach (stronach) o wielkości 128 KB (zwykle). Może napisać tylko stronę o wielkości 128 KB, nic więcej, nic więcej. Więc kiedy zmodyfikujesz, powiedzmy środek strony, dysk odczytuje całą stronę, aktualizuje środek, a następnie zapisuje nową stronę zwykle gdzie indziej, jednocześnie unieważniając starą lokalizację.
Cristian Ciupitu
Cristian Ciupitu ma rację. W niektórych dyskach SSD jest to ograniczone przez wbudowaną pamięć podręczną (wszystkie dyski korzystające z kontrolera Indilinx mają 64 MB pamięci podręcznej, jak sądzę), a być może także przez buforowanie zapisu systemu operacyjnego, jeśli jest włączone. Nawet pamięć podręczna 64 MB ma swoje ograniczenia - dla serwera bazy danych wykonującego wiele operacji zapisu 64 MB może nie wystarczyć. Producenci oprogramowania układowego nie wydają wielu szczegółowych informacji, ale można by założyć, że lepsze oprogramowanie układowe (Intel, Indilinx) wykonuje inteligentne zmiany kolejności / partii, aby zachować małe losowe zapisy na stronie 128 KB, aby zminimalizować ten narzut.
John Rose
Z mojego zrozumienia pamięci podręcznej pozwoli ci zaoszczędzić wiele z tych małych napisów, o które się tak martwisz. Nie ma to nawet większego znaczenia, ponieważ bazy danych są zaprojektowane do wykonywania wielu liniowych operacji odczytu / zapisu. Założę się, że SSD nadal działałoby lepiej, ponieważ jest to odczyt liniowy, a nie sekwencyjny. Oznacza to, że nadal będą występować luki między danymi a dyskiem SSD, które skróciłyby czas wyszukiwania.
Pirolistyczny
0

Nie dodawaj jeszcze tutaj, aby dodać do wątku komentarza, ale jeśli ustawisz wielkość strony DB / licznik odczytu wielokrotnego dla czegokolwiek na dyskach SSD na wielokrotność rozmiaru strony SSD, nie powinno to stanowić problemu.

Dawno nie pracowałem na SQL Server, więc nie jestem pewien, czy te opcje są tam dostępne. Robiłem Oracle i DB2 przez ostatnie kilka lat i to rozwiałoby twoje obawy, ponieważ DB byłby odpowiednio dostosowany do charakterystyki dysku.

Kevin K.
źródło
0

Polecam wyrównywanie partycji, na której przechowywane są pliki bazy danych.

Poleciłbym również zdecydować, co będzie się działo z RAID 0 dla perf (ldf i TempDB), i umieść krytyczne dane na RAID 1 (mdf).

Po trzecie, naprawdę powinieneś zaktualizować oprogramowanie napędu, a także oprogramowanie / sterowniki kontrolera SATA. W ten sposób dajesz firmie sprzętowej i jej twórcom szansę na optymalizację wydajności.

GregC
źródło
RAID 0 nie powinien być nigdy używany dla serwera bazy danych. Jeśli pojedynczy dysk ulegnie awarii, baza danych nie działa, dopóki dysk nie zostanie wymieniony, a brakujące dane zostaną przywrócone z taśmy (dotyczy to dziennika).
mrdenny,
W świecie, w którym pieniądze nie są przedmiotem, wszystko powinno działać na zasilanej bateryjnie pamięci podręcznej L1. W branży bankowej plik LDF jest tak samo ważny jak plik mdf. Do obliczeń naukowych MDF jest jedynym plikiem, który naprawdę musi wynosić 100%.
GregC