Od dłuższego czasu mówię o znaczeniu wydajności sekwencyjnej dla SQL Server. Przepustowość sekwencyjna ma kluczowe znaczenie dla wielu typowych operacji w SQL Server, w tym:
- Pełne kopie zapasowe i przywracanie bazy danych
- Tworzenie i utrzymanie indeksu
- Inicjowanie migawek replikacji i subskrypcji
- Inicjowanie replik AlwaysOn AG
- Inicjowanie serwerów lustrzanych bazy danych
- Inicjowanie drugorzędnych przesyłek dziennika
- Obciążenia związane z zapytaniami relacyjnej hurtowni danych
- Operacje ETL relacyjnej hurtowni danych
Pomimo znaczenia przepustowości sekwencyjnej dla SQL Server, wciąż widzę wielu ludzi, którzy skupiają się tylko na losową wydajność we/wy i opóźnienia, jednocześnie ignorując wydajność przepustowości sekwencyjnej. Gdy myślisz o wydajności sekwencyjnej, musisz wziąć pod uwagę pełną ścieżkę danych, od ich spoczynku na nośniku pamięci do ich wykorzystania przez rdzenie procesora.
W zależności od używanego typu technologii pamięci masowej, może ona być podłączona do serwera hosta za pomocą karty sieciowej Ethernet (NIC) lub karty InfiniBand kanału hosta (HCA). Ten typ połączenia jest najczęściej spotykany w przypadku sieci SAN iSCSI oraz udziałów plików bloku komunikatów serwera zdalnego (SMB) 3.0. Microsoft TechNet ma dobre referencje na ten temat, zwane poprawą wydajności serwera plików za pomocą SMB Direct.
Teoretyczną przepustowość sekwencyjną pojedynczego urządzenia NIC/HCA (na port) pokazano na rysunku 1:
Rysunek 1:Teoretyczna przepustowość karty sieciowej/HCA
Na wszelki wypadek, gdy zastanawiasz się, do czego odnosi się InfiniBand (QDR) lub Infiniband (FDR), InfiniBand Trade Association prowadzi mapę drogową InfiniBand, która pokazuje historię i planowane postępy w przepustowości InfiniBand w ciągu najbliższych kilku lat. Infiniband ma listę akronimów opisujących względną wydajność łącza InfiniBand, jak pokazano poniżej:
- SDR – Pojedyncza szybkość transmisji danych
- DDR – podwójna szybkość transmisji danych
- QDR – poczwórna szybkość transmisji danych
- FDR – czternaście szybkości transmisji danych
- EDR – zwiększona szybkość transmisji danych
- HDR – wysoka szybkość transmisji danych
- NDR – następna szybkość transmisji danych
Tradycyjne sieci SAN Fibre Channel (FC) zazwyczaj korzystają z co najmniej jednego adaptera magistrali hosta (HBA), który ma co najmniej jeden port dla kabli optycznych, które łączą się z przełącznikiem FC lub bezpośrednio z samą siecią SAN FC. Nadal stosunkowo rzadko można spotkać szeroko rozpowszechnione karty HBA 16 Gb FC, więc większość serwerów hostów nadal ma karty HBA FC 4 Gb lub 8 Gb.
Teoretyczną przepustowość sekwencyjną pojedynczego urządzenia HBA (na port) pokazano na rysunku 2:
Rysunek 2:Teoretyczna przepustowość HBA
Bez względu na rodzaj używanego urządzenia interfejsu lub technologii, należy się zastanowić, do jakiego gniazda magistrali rozszerzeń jest ono podłączone na serwerze hosta. W zależności od wieku serwera i typu używanego procesora może to mieć ogromny wpływ na całkowitą przepustowość obsługiwaną przez gniazdo magistrali. Gniazda Peripheral Component Interconnect Express (PCIe) Gen 3 mają dwukrotnie większą przepustowość na linię niż starsze gniazdo PCIe Gen 2. Możesz określić, ile i jaki typ gniazd rozszerzeń masz w serwerze hosta, przeglądając specyfikacje i dokumentację dotyczącą marki i modelu serwera. Jak dotąd tylko procesory z rodziny Intel Xeon E3 v2, Xeon E3 v3, Xeon E5, Xeon E5 v2, Xeon E5 v3 i Xeon E7 v2 obsługują gniazda PCIe Gen 3. Wszystko starsze niż to będzie miało gniazda PCIe Gen 2, a może nawet gniazda PCIe Gen 1, jeśli są bardzo stare (w kategoriach komputerowych).
Teoretyczną przepustowość sekwencyjną pojedynczego gniazda PCIe pokazano na rysunku 3:
Rysunek 3:Teoretyczna przepustowość gniazda rozszerzeń
Od czasu wprowadzenia mikroarchitektury Intel Nehalem w 2008 r. wszystkie procesory serwerowe Intel 2P i większe obsługują technologię Intel QuickPath Interconnect (QPI) do połączeń między procesorami a pamięcią w serwerze, dzięki czemu nowsze procesory obsługują niejednorodny dostęp do pamięci (NUMA), który zastąpił starszą magistralę FSB. NUMA znacznie poprawia skalowalność wraz ze wzrostem liczby procesorów fizycznych w systemie, zwłaszcza gdy masz cztery lub więcej procesorów fizycznych w systemie hosta.
Nowoczesne procesory Intel mają zintegrowane kontrolery pamięci obsługujące Intel QPI. Kiedy spojrzysz na specyfikacje konkretnego procesora Intel w internetowej bazie danych ARK, zobaczysz jego znamionową wydajność QPI w GigaTransfers na sekundę (GT/s). GigaTransfer na sekundę to po prostu miliard operacji, które przesyłają dane na sekundę.
Na przykład nowoczesny, zaawansowany procesor Intel Xeon E5-2667 v3 (Haswell-EP) ma szybkość Intel QPI 9,6 GT/s, podczas gdy starszy, słabszy procesor Intel Xeon E5503 (Nehalem-EP) Intel QPI Szybkość tylko 4,8 GT/s. Nawet wśród procesorów z mikroarchitektury tej samej generacji zobaczysz różnice w znamionowej szybkości Intel QPI. Na przykład w 22-nanometrowej rodzinie Haswell-EP słabszy procesor Intel Xeon E5-2603 v3 jest oceniany na 6,4 GT/s, podczas gdy wyższy procesor Intel Xeon E5-2660 v3 na 9,6 GT/s. Procesory Intel Xeon E5, E5 v2 i E5 v3 mają dwa łącza QPI na procesor, podczas gdy procesory z rodziny Intel E7 i E7 v2 mają trzy łącza QPI na procesor.
Teoretyczną przepustowość sekwencyjną pojedynczego łącza Intel QPI pokazano na rysunku 4:
Rysunek 4:Teoretyczna przepustowość Intel QPI
W zależności od wieku serwera hosta, używanego przez niego procesora oraz typu, szybkości i ilości zainstalowanej pamięci dostępne będą różne ilości teoretycznej przepustowości sekwencyjnej z każdego modułu pamięci. Wszystkie nowoczesne procesory Intel mają zintegrowane kontrolery pamięci, które kontrolują ilość i częstotliwość pamięci obsługiwanej przez procesor. Najnowsze stare serwery hosta będą korzystać z pamięci DDR3, podczas gdy najnowsza generacja procesorów Haswell-EP (rodzina Intel Xeon E5 v3) obsługuje pamięć DDR4. Pamięć DDR4 obsługuje wyższe prędkości, wyższą przepustowość, wyższą gęstość pamięci, niższe zużycie energii i lepszą niezawodność w porównaniu z pamięcią DDR3.
Teoretyczną przepustowość sekwencyjną pojedynczego modułu pamięci pokazano na rysunku 5:
Rysunek 5:Teoretyczna przepustowość modułu pamięci
Patrząc na poszczególne komponenty w istniejącym lub planowanym nowym systemie, powinieneś szukać niedopasowanych komponentów, które mogą wprowadzić do systemu sztuczne, sekwencyjne wąskie gardła wydajności. Na przykład możesz mieć zupełnie nowy serwer z zaawansowanymi procesorami, który jest ułomny przez fakt, że do dostępu do sieci SAN używa 4Gb FC HBA. Innym przykładem może być bardzo szybka karta pamięci flash PCIe lub kontroler RAID, który został zainstalowany w gnieździe PCIe 2.0 x4 o niskiej przepustowości, co sztucznie ograniczało całkowitą przepustowość sekwencyjną urządzenia.
Wiem, że było to wiele technicznych informacji do przetrawienia, szczególnie dla osób, które nie są entuzjastami sprzętu. Myślę, że główną ideą, którą powinieneś wynieść z tego artykułu, jest to, że wydajność sekwencyjna jest dość ważna dla wielu typowych zadań i obciążeń SQL Server. Niskopoziomowe szczegóły dotyczące procesorów, typów pamięci, gniazd rozszerzeń i urządzeń rozszerzeń w rzeczywistości mają duży wpływ na wydajność sekwencyjnej przepustowości, jaką uzyskasz z serwera i jego podsystemu pamięci masowej. Dobra przepustowość sekwencyjna znacznie ułatwia życie jako profesjonalistom ds. baz danych, umożliwiając wspieranie organizacji na znacznie wyższym poziomie.