Udostępnij za pośrednictwem


Rozszerzenie puli buforowej

Dotyczy:programu SQL Server

Wprowadzone w SQL Server 2014 (12.x) rozszerzenie puli buforowej zapewnia bezproblemową integrację nieulotnej pamięci o dostępie swobodnym (czyli dysku półprzewodnikowego) z pulą buforową aparatu bazy danych, co znacznie poprawia wydajność operacji we/wy. Rozszerzenie puli buforowej nie jest dostępne w każdej wersji programu SQL Server. Aby uzyskać więcej informacji, zobacz funkcje obsługiwane przez wersje programu SQL Server 2016.

Zalety rozszerzenia puli buforowej

Podstawowym celem bazy danych programu SQL Server jest przechowywanie i pobieranie danych, dlatego intensywne operacje we/wy dysku są główną cechą aparatu bazy danych. Ponieważ operacje we/wy dysku mogą zużywać wiele zasobów i trwać stosunkowo długo, program SQL Server koncentruje się na dokonaniu wysokiej wydajności operacji we/wy. Pula służy jako podstawowe źródło alokacji pamięci programu SQL Server. Zarządzanie buforami jest kluczowym składnikiem w celu osiągnięcia tej wydajności. Składnik zarządzania buforem składa się z dwóch mechanizmów: menedżera do uzyskiwania dostępu do i aktualizowania stron baz danych oraz puli buforowej do zmniejszania operacji We/Wy na plikach bazy danych.

Strony danych i indeksu są odczytywane z dysku do puli buforowej, a modyfikowane strony (znane również jako zanieczyszczone strony) są zapisywane z powrotem na dysk. Wykorzystanie pamięci na serwerze i punkty kontrolne bazy danych powodują, że gorące (aktywne) brudne strony w pamięci podręcznej buforu są eksmitowane z pamięci podręcznej i zapisywane na nośnikach mechanicznych, a następnie są ponownie odczytywane do pamięci podręcznej. Te operacje we/wy są zwykle małymi losowymi operacjami odczytu i zapisu w kolejności od 4 KB do 16 KB danych. Małe losowe wzorce we/wy powodują częste poszukiwania, konkurując o mechaniczne ramię dyskowe, zwiększając opóźnienie we/wy i zmniejszając zagregowaną przepływność we/wy systemu.

Typowym podejściem do rozwiązywania tych wąskich gardeł we/wy jest dodanie większej liczby pamięci DRAM lub alternatywnie dodanie wysokowydajnych wrzecion SAS. Chociaż te opcje są przydatne, mają znaczące wady: pamięć DRAM jest droższa niż dyski magazynu danych, a dodanie wrzecion zwiększa nakłady kapitałowe na pozyskiwanie sprzętu i zwiększa koszty operacyjne przez zwiększenie zużycia energii i zwiększone prawdopodobieństwo awarii składników.

Funkcja rozszerzenia puli buforów rozszerza pamięć podręczną puli buforów o nieulotną pamięć (zazwyczaj SSD). Ze względu na to rozszerzenie pula buforów może pomieścić większy zestaw roboczy bazy danych, co prowadzi do stronicowania operacji wejścia/wyjścia między pamięcią RAM a dyskami SSD. Skutecznie odciąża małe losowe operacje wejścia/wyjścia z dysków mechanicznych na dyski SSD. Ze względu na mniejsze opóźnienie i lepszą losową wydajność operacji we/wy dysków SSD rozszerzenie puli znacznie poprawia przepływność operacji we/wy.

Na poniższej liście opisano zalety funkcji rozszerzenia buforowej puli.

  • Zwiększona losowa przepustowość operacji wejścia/wyjścia

  • Mniejsze opóźnienie we/wy

  • Zwiększona przepływność transakcji

  • Zwiększona wydajność odczytu dzięki większej hybrydowej puli buforów

  • Architektura buforowania, która może korzystać z obecnych i przyszłych dysków pamięci o niskich kosztach

Pojęcia

Następujące terminy są stosowane w ramach funkcji rozszerzenia puli buforowej.

Termin Opis
Dysk półprzewodnikowy (SSD) Dyski półprzewodnikowe przechowują dane w pamięci RAM w trwały sposób. Aby uzyskać więcej informacji, zobacz definicję Wikipedii.
Bufor W programie SQL Server bufor jest stroną o rozmiarze 8 KB w pamięci, tym samym rozmiarem co strona danych lub indeksu. W związku z tym pamięć podręczna buforu jest podzielona na strony o rozmiarze 8 KB. Strona pozostaje w pamięci podręcznej buforu, dopóki menedżer buforu nie potrzebuje obszaru buforu, aby odczytać więcej danych. Dane są zapisywane z powrotem na dysku tylko wtedy, gdy są modyfikowane. Te strony zmodyfikowane w pamięci są nazywane brudnymi stronami. Strona jest czysta, gdy jest równoważna jej obrazowi bazy danych na dysku. Dane w pamięci podręcznej buforu można modyfikować wiele razy przed zapisaniem z powrotem na dysku.
Pula buforów Nazywane również pamięcią podręczną buforową . Pula bufora to globalny zasób współdzielony przez wszystkie bazy danych do buforowania stron danych. Maksymalny i minimalny rozmiar pamięci podręcznej puli buforów jest określany podczas uruchamiania lub w sytuacji, gdy instancja SQL Server jest dynamicznie ponownie konfigurowana przy użyciu sp_configure. Ten rozmiar określa maksymalną liczbę stron, które można buforować w puli buforowej w dowolnym momencie działania instancji.

Maksymalna ilość pamięci, która może zostać zatwierdzona przez rozszerzenie puli, może być ograniczona przez inne aplikacje działające na maszynie, w przypadku gdy te aplikacje powodują znaczne wykorzystanie pamięci.
punkt kontrolny Punkt kontrolny tworzy znany punkt odniesienia, z którego silnik bazy danych może rozpocząć zastosowanie zmian zawartych w dzienniku transakcji podczas odzyskiwania po nieoczekiwanym zamknięciu lub awarii. Punkt kontrolny zapisuje zanieczyszczone strony i informacje dziennika transakcji z pamięci na dysku, a także rejestruje informacje o dzienniku transakcji. Aby uzyskać więcej informacji, zobacz Database checkpoints (SQL Server).

Szczegóły

Pamięć SSD jest używana jako rozszerzenie podsystemu pamięci, a nie podsystemu przechowywania danych. Oznacza to, że plik rozszerzenia puli umożliwia menedżerowi puli korzystanie zarówno z pamięci DRAM, jak i NAND-Flash, aby zachować znacznie większą pulę stron lukewarm w nieuwolonej pamięci dostępu losowego wspieranej przez dyski SSD. Spowoduje to utworzenie wielopoziomowej hierarchii buforowania z poziomem 1 (L1) jako pamięcią DRAM i poziomem 2 (L2) jako plik rozszerzenia puli na dysku SSD. Tylko czyste strony są zapisywane w pamięci podręcznej L2, co pomaga zachować bezpieczeństwo danych. Menedżer bufora zajmuje się przenoszeniem czystych stron danych między pamięciami podręcznymi L1 i L2.

Poniższa ilustracja zawiera ogólne omówienie architektury puli względem innych składników programu SQL Server.

Diagram architektury rozszerzenia puli SSD.

Po włączeniu rozszerzenia puli buforowej, określa ono rozmiar i ścieżkę pliku buforowania puli na dysku SSD. Ten plik jest ciągłym obszarem przechowywania na dysku SSD i jest statycznie skonfigurowany w trakcie uruchamiania wystąpienia programu SQL Server. Zmiany parametrów konfiguracji pliku można wykonać tylko wtedy, gdy funkcja rozszerzenia puli jest wyłączona. Po wyłączeniu rozszerzenia puli wszystkie powiązane ustawienia konfiguracji zostaną usunięte z rejestru. Plik rozszerzenia buforu puli jest usuwany po zamknięciu instancji serwera SQL.

Ograniczenia pojemności

Wersja SQL Server Enterprise umożliwia maksymalny rozmiar rozszerzenia puli wynoszący 32 razy więcej niż wartość max server memory.

Wersja SQL Server Standard umożliwia maksymalny rozmiar rozszerzenia puli wynoszący cztery razy więcej niż wartość max server memory.

Najlepsze rozwiązania

Zalecamy stosowanie tych najlepszych rozwiązań.

  • Po włączeniu rozszerzenia puli po raz pierwszy należy ponownie uruchomić wystąpienie programu SQL Server, aby uzyskać maksymalne korzyści z wydajności.

  • Ustaw rozszerzenie puli buforowej tak, aby stosunek rozmiaru pamięci fizycznej (max server memory) do rozmiaru rozszerzenia puli buforowej wynosił 1:16 lub mniej. Niższy współczynnik w zakresie od 1:4 do 1:8 może być optymalny. Aby uzyskać informacje na temat ustawiania opcji max server memory, zobacz opcje konfiguracji pamięci serwera .

  • Dokładnie przetestuj rozszerzenie puli buforów przed wdrożeniem w środowisku produkcyjnym. Po przejściu do środowiska produkcyjnego unikaj wprowadzania zmian konfiguracji w pliku lub wyłączania funkcji. Te działania mogą mieć negatywny wpływ na wydajność serwera, ponieważ pula jest znacznie zmniejszona, gdy funkcja jest wyłączona. Po wyłączeniu pamięć używana do obsługi funkcji nie zostanie odzyskana do momentu ponownego uruchomienia wystąpienia programu SQL Server. Jeśli jednak funkcja zostanie ponownie włączona, pamięć zostanie ponownie użyta bez ponownego uruchomienia wystąpienia.

Zwraca informacje o rozszerzeniu puli bufora

Aby wyświetlić konfigurację rozszerzenia puli bufora i zwrócić informacje o stronach danych w rozszerzeniu, można użyć następujących dynamicznych widoków zarządzania.

Liczniki wydajności są dostępne w SQL Server, Obiekt Menedżera Buforu, aby monitorować strony danych w pliku rozszerzenia puli buforowej. Aby uzyskać więcej informacji, zobacz liczniki wydajności rozszerzenia puli buforów .

Dostępne są następujące XEvents.

XEvent Opis Parametry
sqlserver.
buffer_pool_extension_pages_written
Uruchamia się, gdy strona lub grupa stron są usuwane z puli buforowej i zapisywane w pliku rozszerzenia puli buforowej. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_extension_pages_read
Uruchamia się, gdy strona jest odczytywana z pliku rozszerzenia puli buforowej do puli buforowej. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_extension_pages_evicted
Uruchamia się, gdy strona jest usuwana z pliku rozszerzenia puli buforowej. number_page
first_page_id
first_page_offset
initiator_numa_node_id
sqlserver.
buffer_pool_eviction_thresholds_recalculated
Uruchamia się podczas obliczania progu eksmisji. warm_threshold
cold_threshold
pages_bypassed_eviction
eviction_bypass_reason
eviction_bypass_reason_description
Opis zadania Artykuł
Włącz i skonfiguruj rozszerzenie puli buforowej. ALTER SERVER CONFIGURATION
Modyfikowanie konfiguracji rozszerzenia puli buforów ZMIEŃ KONFIGURACJĘ SERWERA
Wyświetlanie konfiguracji rozszerzenia puli buforu sys.dm_os_buffer_pool_extension_configuration
Monitorowanie rozszerzenia puli buforów sys.dm_os_buffer_descriptors

obiekt Menedżera buforów SQL Server