Skalowanie baz danych za pomocą tanich dysków twardych SSD


25

Mam nadzieję, że wielu z was pracuje z witrynami o dużym natężeniu ruchu opartymi na bazach danych i istnieje prawdopodobieństwo, że główne problemy ze skalowalnością dotyczą bazy danych. Ostatnio zauważyłem kilka rzeczy:

  1. Większość dużych baz danych wymaga zespołu DBA w celu skalowania. Ciągle zmagają się z ograniczeniami dysków twardych i kończą się bardzo drogimi rozwiązaniami (sieci SAN lub duże macierze RAID, okna częstej konserwacji w celu defragmentacji i repartycjonowania itp.) Rzeczywisty roczny koszt utrzymania takich baz danych wynosi 100–1 mln USD, co stanowi za strome dla mnie :)

  2. Wreszcie, mamy kilka firm, takich jak Intel, Samsung, FusionIO itp., Które właśnie zaczęły sprzedawać wyjątkowo szybkie, ale niedrogie dyski SSD oparte na technologii SLC Flash. Dyski te są 100 razy szybsze w losowym odczycie / zapisie niż najlepsze wirujące dyski twarde na rynku (do 50 000 losowych zapisów na sekundę). Ich czas wyszukiwania jest prawie zerowy, więc koszt losowych operacji we / wy jest taki sam, jak sekwencyjnych operacji we / wy, co jest niesamowite w przypadku baz danych. Te dyski SSD kosztują około 10-20 USD za gigabajt i są stosunkowo małe (64 GB).

Wydaje się więc, że istnieje możliwość uniknięcia OGROMNYCH kosztów skalowania baz danych w tradycyjny sposób, po prostu przez zbudowanie wystarczająco dużej macierzy dysków SSD RAID 5 (która kosztowałaby zaledwie kilka tysięcy dolarów). Nie obchodzi nas to, czy plik bazy danych jest pofragmentowany i możemy sobie pozwolić na 100 razy więcej zapisów na dysku bez konieczności rozprowadzania bazy danych na 100 wrzecion. .

Czy ktoś jest tym zainteresowany? Testowałem kilka dysków SSD i mogę udostępniać moje wyniki. Jeśli ktokolwiek na tej stronie rozwiązał już swoje wąskie gardło we / wy za pomocą dysków SSD, chciałbym usłyszeć wasze historie wojenne!

PS. Wiem, że istnieje wiele drogich rozwiązań, które pomagają w skalowalności, na przykład sprawdzone w czasie pamięci SAN oparte na pamięci RAM. Chcę jasno powiedzieć, że nawet 50 000 USD jest zbyt kosztowne dla mojego projektu. Muszę znaleźć rozwiązanie, które kosztuje nie więcej niż 10 000 USD i nie zajmuje dużo czasu.


Dave, NXC i Burly,

Dziękuję za odpowiedzi! Chciałbym wyjaśnić, że słowo „tanie” jest bardzo ważne w mojej sytuacji. Muszę więc używać tanich serwerów Dell (2950 USD 4K, które mają tylko 8 banków pamięci). Mam już 32 GB pamięci RAM, więc nie mogę kontynuować skalowania w ten sposób. Poza tym dodanie pamięci RAM nie oszczędza cię od wąskich gardeł zapisywania dysku, co jest moim głównym problemem w tej chwili.

Kiedyś martwiłem się o żywotność dysków SSD, ale po przeczytaniu o współczesnych algorytmach wyrównywania zużycia jestem pewien, że te dyski będą wystarczające długo. Moja baza danych zapisuje 300 GB dziennie, a według prognoz w 2009 r. Przekroczy 1 TB dziennie. Dyski SSD dla przedsiębiorstw są zaprojektowane do obsługi około 10 TB zapisów dziennie przez wiele lat.

Nie zgodziłbym się z twierdzeniem Burly'ego, że migracja z SAS na SSD wymaga zbyt wiele pracy. Moja baza danych jest synchronicznym kopią lustrzaną, więc mogę zaktualizować jedną stronę kopii lustrzanej, a następnie obserwować ją przez kilka miesięcy, a jeśli wystąpi awaria, mogę przejść w tryb failover na drugi serwer, który wciąż ma stare dobre dyski twarde SAS ...


2
BTW, chociaż określasz, w jaki sposób poprawiona wydajność potencjalnie zmniejszyłaby koszty sprzętu, nie wyrażasz jednoznacznie, w jaki sposób dyski SSD zmniejszyłyby twoje główne koszty. Zakładam, że prawdopodobnie zbliża się fakt, że zmniejszenie wielkości instalacji może zmniejszyć wymagania dotyczące personelu
Burly,

2
Moja baza danych z radością działała w produkcji przez 3 lata bez żadnych baz danych i konsultantów w pełnym wymiarze godzin. Następnie obciążenie wzrosło do punktu, w którym wpadamy na wąskie gardła we / wy. Tak więc być może będę musiał zapłacić DBA dużo pieniędzy za partycjonowanie i defragmentację bazy danych. Lub po prostu zdobądź tanie dyski SSD.
Dennis Kashkin

Zaktualizowałem swoją odpowiedź, aby omówić dodane ograniczenia kosztów. W zależności od miejsca, rozmiaru, wydajności, konserwacji i modyfikacji DB, dyski SSD z pewnością mogą zaoferować opłacalne rozwiązanie. Projekt rozwiązania i analiza kosztów są tutaj poza naszym zakresem. Powodzenia!
Burly

Pijesz za dużo koolaid, SSD jest co najmniej 1,5 razy szybszy do odczytu niż dysk RAID, ale zapisy są wolniejsze niż dyski magnetyczne. SANS oparty na światłowodach z szybką macierzą RAID zniszczy każdy dysk SSD, bez względu na to, jak dobry jest.
TravisO,

Chciałem tylko udostępnić - od 5 miesięcy prowadzimy bazę danych o pojemności 400 GB na dyskach SSD. Ta baza danych ma dużo aktywności zapisu (do 1200 transakcji na sekundę). Do tej pory nie mieliśmy problemów, a wydajność była znacznie lepsza w porównaniu do RAID10 z dyskami SAS 15K rpm. Dyski pozostają bezczynne w 96%. Biorąc pod uwagę, że dyski SSD stają się teraz niesamowicie tanie (600 USD za dysk Intel 160 GB), twierdzę, że jest to lepszy sposób na skalowanie I / O niż SAN.
Dennis Kashkin

Odpowiedzi:


20

Potencjalne problemy

Mam obecnie kilka problemów z używaniem dysków SSD do produkcyjnych baz danych

  • Większość transakcji na bazach danych na większości witryn jest odczytywana, a nie zapisywana. Jak powiedział Dave Markle, najpierw zmaksymalizujesz tę wydajność dzięki pamięci RAM.
  • Dyski SSD są nowością na rynku głównym i przedsiębiorstwach i żaden administrator nie jest wart swojej soli, aby przenieść produkcyjną bazę danych, która obecnie wymaga 15 000 obr./min dysków U320 w macierzy RAID5 komunikujących się za pośrednictwem kanału Fibrechannel z niesprawdzoną technologią.
  • Koszt badań i testów związanych z przejściem na tę nową technologię, sprawdzanie jej w środowisku, aktualizowanie procedur operacyjnych itd. To większy koszt początkowy, zarówno pod względem czasu, jak i pieniędzy, niż większość sklepów musi oszczędzić.

Proponowane korzyści

To powiedziawszy, istnieje wiele pozycji, przynajmniej na papierze, na korzyść dysków SSD w przyszłości:

  • Niższe zużycie energii w porównaniu do dysku twardego
  • Znacznie niższe wytwarzanie ciepła
  • Wyższa wydajność na wat w porównaniu do dysku twardego
  • Znacznie wyższa przepustowość
  • Znacznie niższe opóźnienie
  • Większość dysków SSD najnowszej generacji ma miliony cykli wytrzymałości zapisu, więc wytrzymałość zapisu nie jest problemem, jak kiedyś. Zobacz nieco przestarzały artykuł tutaj

Tak więc dla danego testu wydajności, biorąc pod uwagę całkowity koszt posiadania, w tym bezpośrednie koszty energii i pośrednie koszty chłodzenia, dyski SSD mogą stać się bardzo atrakcyjne. Dodatkowo, w zależności od specyfiki twojego środowiska, zmniejszenie liczby wymaganych urządzeń dla danego poziomu wydajności może również skutkować zmniejszeniem wymagań dotyczących personelu, zmniejszając koszty pracy.

Koszt i wydajność

Dodałeś, że masz ograniczenie kosztów poniżej 50 000 USD i naprawdę chcesz je utrzymać poniżej 10 000 USD. W komentarzu stwierdziłeś również, że możesz uzyskać „tanie” dyski SSD, unikając, że dyski SSD będą tańsze niż DBA lub konsultanci. Może tak być w zależności od liczby godzin potrzebnych DBA i tego, czy jest to ponowny koszt, czy nie. Nie mogę wykonać analizy kosztów dla ciebie.

Jednak jedną rzeczą, na którą musisz bardzo uważać, jest rodzaj dysku SSD, który otrzymujesz. Nie wszystkie dyski SSD są sobie równe. Ogólnie rzecz biorąc, „tanie” dyski SSD, które widzisz na sprzedaż w cenie 200–400 dolarów (2008/11/20), są przeznaczone do środowisk o niskim zużyciu energii / ciepła, takich jak laptopy. Dyski te mają w rzeczywistości niższy poziom wydajności niż dyski twarde o prędkości 10 000 lub 15 000 obr./min - szczególnie w przypadku zapisu. Dyski na poziomie przedsiębiorstwa, które mają zabójczą wydajność, o której mówisz - podobnie jak seria Mtron Pro - są dość drogie. Obecnie są w pobliżu:

  • 400 USD za 16 GB
  • 900 USD za 32 GB
  • 1400 USD za 64 GB
  • 3200 USD za 128 GB

W zależności od wymagań dotyczących miejsca, wydajności i redundancji możesz z łatwością zniszczyć swój budżet.

Na przykład, jeśli twoje wymagania wymagałyby 128 GB dostępnej pamięci, wówczas RAID 0 + 1/10 lub RAID 5 z 1 hotspare wyniesie ~ 5600 $

Jeśli jednak potrzebujesz TB dostępnej przestrzeni dyskowej, wówczas RAID 0 + 1/10 wyniesie ~ 51 000 $, a RAID 5 z 2 punktami dostępowymi będzie ~ 32 000 $.

Duży obraz

To powiedziawszy, instalacja, konfiguracja i utrzymanie dużej bazy danych produkcji wymaga wysoko wykwalifikowanej osoby. Dane w bazie danych i usługi świadczone na podstawie tych danych mają niezwykle wysoką wartość dla firm o tym poziomie wymagań wydajnościowych. Ponadto istnieje wiele rzeczy, których nie można rozwiązać, rzucając sprzęt na problem. Nieprawidłowo skonfigurowany DBMS, zły schemat bazy danych lub strategia indeksowania może / zniszczyć / wydajność bazy danych. Wystarczy spojrzeć na problemy, które napotkały Stackoverflow podczas migracji do SQL Server 2008 tutaj i tutaj. Faktem jest, że baza danych jest uciążliwą aplikacją nie tylko na dysku, ale także na pamięci RAM i procesorze. Równoważenie wielowymiarowego problemu z wydajnością oraz integralnością danych, bezpieczeństwem, redundancją i kopiami zapasowymi jest trudnym zadaniem.

Podsumowując, chociaż uważam, że społeczność z zadowoleniem przyjmuje wszelkie ulepszenia zarówno sprzętu, jak i oprogramowania, administracja bazami danych na dużą skalę - podobnie jak tworzenie oprogramowania - jest trudnym problemem i nadal będzie wymagać wykwalifikowanych pracowników. Dana poprawa może nie przynieść kosztów redukcji siły roboczej, na które Ty lub firma możesz liczyć.

Dobrym punktem zwrotnym dla niektórych badań może być tutaj strona internetowa / blog Brenta Ozara . Możesz rozpoznać jego imię - to on pomógł ekipie przerzucania stosów w problemach z wydajnością MS SQL Server 2008. Do swojego bloga i zasobów, do których prowadzi linki, oferuje szeroki zakres i głębię.

Aktualizacja

Stackoverflow sami wybierają trasę do przechowywania danych opartą na SSD konsumentów. Przeczytaj o tym tutaj: http://blog.serverfault.com/post/our-storage-decision/

Referencje


Doskonała odpowiedź.
NotMe,

Spędziłeś na tym zdecydowanie za dużo czasu: P
TravisO,

Niesamowite wyjaśnienia. Wytnij w drewnie dla każdego. Dobra robota!
BerggreenDK,

4

Jeśli masz witrynę o naprawdę dużym natężeniu ruchu, która może skorzystać z dysku SSD w celu zwiększenia wydajności zapisu, prawdopodobnie będziesz mieć problem z czasem życia dysku SSD, więc nie jestem jeszcze za to sprzedawany.

Mając to na uwadze, co zrobić z bazami danych o wysokim poziomie odczytów? Odpowiedź jest prosta: zablokuj serwer tyle pamięci RAM, ile możesz znieść. Przekonasz się, że i tak najgorętsze tabele są prawie zawsze przechowywane w pamięci podręcznej RAM, a każde duże trafienie na dysk prawdopodobnie będzie spowodowane dużym skanowaniem tabeli lub indeksu, który często można zoptymalizować za pomocą odpowiedniego indeksowania.


Chciałbym jeszcze raz skomentować twój komentarz dotyczący troski o żywotność dysku SSD. Pod względem MTBF dysk SSD ma znacznie wyższą ocenę niż dysk twardy. Jeśli chodzi o wytrzymałość na cykl zapisu - poprzednio problem, obecna generacja ma ponad 1 milion cykli zapisu, co sprawia, że ​​nie stanowi to problemu, szczególnie w konfiguracjach RAID.
Burly,

(Brak znaków) ... Nie chodzi o to, że nie powinieneś martwić się o żywotność dysku SSD, po prostu obecne oceny techniczne sugerują, że dyski SSD są równe lub lepsze od odpowiednika dysku twardego. Fakt, że dyski SSD nie mają dziesięcioleci doświadczenia w produkcji, oznacza, że ​​są niesprawdzone.
Burly,

Dyski SSD są zapisywane wolniej niż dyski
HD

Dyski SSD są zasadniczo znacznie szybsze przy losowym zapisywaniu, szczególnie przy zapisywaniu losowym 4K. Mogą być wolniejsze w przypadku sekwencyjnych zapisów, ale niekoniecznie jest to ważne dla serwerów baz danych.
ChrisInEdmonton

1

Pracuję jako DBA od ponad 5 lat i zawsze zastanawiam się, jak poprawić wydajność DB. Obserwowałem przestrzeń SSD i myślę, że zdecydowanie stają się one coraz bardziej realną opcją.

Sprawdź to;

http://i.gizmodo.com/5166798/24-solid-state-drives-open-all-of-microsoft-office-in-5-seconds

Jest także nowy produkt firmy Acard o nazwie ANS-9010, który jest ulepszoną wersją GC-Ramdisc, która pozwala na użycie pamięci RAM DDR2 do utworzenia napędu SATA (do 64 gramów) przy użyciu pamięci DDR2 o wydajności teoretycznej 400 MB / s maksymalny.

http://techreport.com/articles.x/16255/3

^^ Ale inną przydatną rzeczą w tym artykule jest to, że porównuje ANS-9010 ze wszystkimi odtwarzaczami na rynku dysków SSD i okazuje się, że Intel ma dysk SSD x25-E 64 GB, który jest prawie porównywalny z ramdyskiem sprzętowym.

Rzeczą, która martwiłaby mnie o SSD, jest to, że znoszą je wszystkie stresy, na jakie narażone byłyby duże DB, i dlatego musiałbyś użyć raidu, aby odzwierciedlić dyski, co oznacza, że ​​płacisz dwa razy więcej;

A wadą sprzętowego ramdysku jest to, że bateria, w przypadku przerwy w zasilaniu, zasila go tylko tak długo, że trzeba będzie wymyślić jakiś wymyślny sposób, aby to zrobić. Uważam, że możesz też kupić dla nich wtyczkę sieciową, ale nadal zależy to od twojego UPS.

Sugeruję, abyś użył sprzętowego dysku RAM dla pliku tymczasowej bazy danych i pliku wymiany systemu Windows - i umieścił bazę danych na Intel X25-E Extreme (około 600 USD za 64 gig).

W każdym razie to krzyczałoby i wszyscy bylibyśmy bardzo zazdrosni.

(Rozważ także użycie innego ANS-9010 do hostowania witryny)

Pozdrawiam, Dave


1

Właśnie zmontowaliśmy serwer w2k3 R2 64bit Sql 2008 na podwójnym 2,5-calowym lustrze hybrydowym Seagate Momentus XT - 1/4 skoku dla OS i 1/4 skoku dla DB. Używałem 125 GB dla systemu operacyjnego i 125 GB dla bazy danych. uzyskiwały od 1500 MB / s do 1900 MB / s odczytów sekwencyjnych. Na procesorze Intel i7 2600K 3,4 Ghz 8 GB


0

Na rynku są produkty takie jak Ten, które robią takie rzeczy. Ponadto, jak napisano w innym plakacie, dodanie dodatkowej pamięci RAM do serwera DB zapewni lepsze wskaźniki trafień w pamięci podręcznej, co zmniejszy ruch na dysku.

8-gniazdowe serwery Opteron, takie jak Sun X4600 , pozwalają na umieszczenie w nich do 256 GB pamięci RAM w cenach, które są nadal tańsze niż duży zespół DBA. Możesz również rozważyć użycie plików płaskich zamiast DBMS (jak to zrobiła ta firma ), co zapewni lepszą wydajność niż DBMS. W takim przypadku sieć SAN zapewnia stopień integralności danych. Będziesz jednak musiał starannie zaprojektować strategię dostępu do danych, aby uniknąć bałaganu. Najwyraźniej robi to kilka strojów dot-com o dużej objętości. Jest znacznie bardziej wydajny niż DBMS, pozwalając dość sprzętowi dla pieszych na obsługę dużych ładunków i pozwala uniknąć opłat licencyjnych DBMS.


-1

Dyski SSD są oparte na pamięci flash NAND (MLC lub SLC). Jeśli kupujesz dyski SSD w formacie SATA (2 lub 3), ograniczasz wydajność, którą możesz z nich uzyskać. Zazwyczaj dyski SSD oparte na szybkim kontrolerze Sandforce SF-1200 dają odczyt 220 MB / sekundę i zapis 205 MB / sekundę - znacznie szybciej niż staromodny mechaniczny dysk obrotowy.

Jednak jeśli przejdziesz na rozwiązanie PCIe, takie jak FusioIO, które nie ma wolnego złącza SATA 2 lub SATA 3, patrzysz na rozwiązania, które są 10-50 razy szybsze niż obracanie mechanicznych byków (mam na myśli dyski).

Tak więc, jeśli chodzi o „tanie” rozwiązanie, wybierz dysk SATA 2/3 SDD oparty na kontrolerze Sandforce SF-1200. Dzięki temu zwiększysz szybkość o 3-5 razy (w oparciu o rzeczywiste doświadczenia). Jeśli masz budżet, wybierz FusioIO. Nic nie przebije go pod względem wydajności. Jest niesamowicie szybki. Oczekuj jednak, że wydasz od 20 000 do 50 000 USD.


2
Błąd. Nowoczesny dysk SSD jest dobry na około 50 000 IOPS, zapewniając przepustowość 580 Mb. SAS zapewnia mniej niż 500 IOPS. Bazy danych nie są serwerami plików.
TomTom
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.