Udostępnij za pośrednictwem


Grupa plików zoptymalizowana pod kątem pamięci

Dotyczy:SQL Server

Aby utworzyć tabele zoptymalizowane pod kątem pamięci, należy najpierw utworzyć grupę plików zoptymalizowaną pod kątem pamięci. Grupa plików zoptymalizowana pod kątem pamięci zawiera co najmniej jeden kontener. Każdy kontener zawiera pliki danych lub pliki różnicowe albo oba te pliki.

Mimo że wiersze danych z SCHEMA_ONLY tabel nie są utrwalane, a metadane dla tabel zoptymalizowanych pod kątem pamięci oraz natywnie skompilowanych procedur składowanych są przechowywane w tradycyjnych katalogach, silnik In-Memory OLTP nadal wymaga grupy plików zoptymalizowanej pod kątem pamięci dla SCHEMA_ONLY tabel zoptymalizowanych pod kątem pamięci, aby zapewnić jednolite środowisko dla baz danych z tabelami zoptymalizowanymi pod kątem pamięci.

Grupa plików zoptymalizowana pod kątem pamięci opiera się na grupie plików filestream, z następującymi różnicami:

  • Dla każdej bazy danych można utworzyć tylko jedną grupę plików zoptymalizowaną pod kątem pamięci. Musisz jawnie oznaczyć grupę plików jako zawierającą memory_optimized_data. Grupę plików można utworzyć podczas tworzenia bazy danych lub dodać ją później:

    ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA  
    
  • Musisz dodać co najmniej jeden kontener do MEMORY_OPTIMIZED_DATA grupy plików. Przykład:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • Aby utworzyć grupę plików zoptymalizowaną pod kątem pamięci, nie trzeba włączać FILESTREAM (Włącz i skonfiguruj FILESTREAM). Mapowanie strumienia plików odbywa się przez silnik OLTP In-Memory.

  • Nowe kontenery można dodać do grupy plików zoptymalizowanej pod kątem pamięci. Może być potrzebny nowy kontener, aby rozszerzyć wymaganą pamięć masową dla trwałej tabeli zoptymalizowanej pod kątem pamięci, a także rozkładać operacje we/wy na wiele kontenerów.

  • Przenoszenie danych przy użyciu pamięciowo zoptymalizowanej grupy plików jest zoptymalizowane w konfiguracji grupy dostępności Always On. W przeciwieństwie do plików strumienia plików wysyłanych do replik pomocniczych pliki punktu kontrolnego (zarówno dane, jak i delta) w grupie plików zoptymalizowanej pod kątem pamięci nie są wysyłane do replik pomocniczych. Pliki danych i różnic są tworzone przy użyciu dziennika transakcji na pomocniczej replice.

Uwaga / Notatka

W programie SQL Server 2022 (16.x) i starszych wersjach po użyciu grupy plików zoptymalizowanej pod kątem pamięci można usunąć ją tylko przez usunięcie bazy danych. Nie można usunąć niepustego kontenera ani usunąć ostatniego pozostałego kontenera, nawet jeśli jest pusty. Nie można również przenosić par danych i plików różnicowych do innego kontenera w grupie plików zoptymalizowanej pod kątem pamięci.

Począwszy od wersji zapoznawczej programu SQL Server 2025 (17.x), można usunąć ostatni pozostały kontener i usunąć grupę plików zoptymalizowaną pod kątem pamięci. Aby uzyskać więcej informacji, zobacz Usuwanie kontenera zoptymalizowanego pod kątem pamięci i grupy plików.

Konfigurowanie grupy plików Memory-Optimized

Rozważ utworzenie wielu kontenerów w grupie plików zoptymalizowanej pod kątem pamięci i rozłożenie ich na różnych dyskach, aby zwiększyć przepustowość przesyłania strumieniowego danych do pamięci.

W scenariuszu z wieloma kontenerami i napędami, dane i pliki różnicowe są przydzielane do kontenerów w sposób rotacyjny. Pierwszy plik danych jest przydzielany z pierwszego kontenera, a plik różnicowy jest przydzielany z następnego kontenera, a ten wzorzec alokacji powtarza się. Ten schemat alokacji dystrybuuje dane i pliki różnicowe równomiernie między kontenerami, jeśli masz nieparzystą liczbę dysków, a każdy z nich jest mapowany na jeden kontener. Jeśli jednak masz parzystą liczbę dysków, każdy zmapowany do kontenera, może to spowodować nierównowagę w przechowywaniu, z plikami danych zmapowanymi na nieparzyste dyski i plikami różnicowymi zmapowanymi na dyski parzyste. Aby uzyskać zrównoważony strumień operacji we/wy podczas odzyskiwania, rozważ umieszczenie par danych i plików różnicowych na tych samych wrzecionach/magazynie.

Podczas konfigurowania magazynu należy podać wolne miejsce na dysku o rozmiarze cztery razy większym niż tabele zoptymalizowane dla trwałej pamięci. Upewnij się również, że twój podsystem we/wy obsługuje wymagane IOPS dla obciążenia. Jeśli pary danych i plików różnicowych są wypełniane przy określonej liczbie operacji we/wy na sekundę, potrzebujesz trzykrotnej liczby operacji we/wy na sekundę, aby uwzględnić operacje zapisu i scalania. Możesz zwiększyć pojemność magazynu i liczbę operacji we/wy na sekundę, dodając jeden lub więcej kontenerów do grupy plików zoptymalizowanej pod kątem pamięci.

Ostrzeżenie

MAXSIZE Jeśli wartość jest ustawiona dla grupy plików zoptymalizowanej pod kątem pamięci, a pliki punktu kontrolnego przekraczają maksymalny rozmiar kontenera, baza danych stanie się PODEJRZANY.
W takim przypadku nie próbuj ustawiać bazy danych jako OFFLINE lub ONLINE, co może spowodować pozostanie bazy danych w stanie RECOVERY_PENDING.

Zobacz też

tworzenie magazynu dla obiektów Memory-Optimized i zarządzanie nim
pliki bazy danych i grupy plików
ALTER DATABASE Opcje pliku i grupy plików (Transact-SQL)