Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

SCHEMA_ONLY

Termin Definicja
SCHEMA_ONLY

SCHEMA_ONLY to opcja tabeli memory-optimized przechowującej wyłącznie strukturę, bez trwałości danych po restarcie.

SCHEMA_ONLY jako ustawienie trwałości tabeli memory-optimized

SCHEMA_ONLY to wartość właściwości DURABILITY stosowanej przy tworzeniu tabeli zoptymalizowanej pod kątem pamięci w silniku Microsoft SQL Server. Taka tabela zachowuje w bazie definicję obiektu, czyli między innymi nazwę, kolumny, typy danych, ograniczenia oraz indeksy, ale wiersze nie są zapisywane w sposób zapewniający ich odtworzenie po ponownym uruchomieniu usługi SQL Server. Po restarcie baza ponownie udostępnia strukturę tabeli, natomiast jej zawartość jest pusta.

Ustawienie SCHEMA_ONLY nie oznacza, że tabela jest tymczasowa w rozumieniu polecenia CREATE TABLE z nazwą zaczynającą się od znaku krzyżyka. Jest to normalny obiekt bazy danych, widoczny w metadanych i dostępny dla zapytań do czasu jego usunięcia. Różnica dotyczy trwałości danych wierszowych. W trakcie działania instancji SQL Server rekordy mogą być odczytywane, dodawane, modyfikowane i usuwane, lecz ich istnienie nie może być traktowane jako gwarantowane po awarii procesu, restarcie systemu ani ponownym uruchomieniu bazy.

Wymagania utworzenia tabeli z DURABILITY = SCHEMA_ONLY

Tabela memory-optimized wymaga w SQL Server włączonej funkcji In-Memory OLTP oraz odpowiednio skonfigurowanej bazy danych. Baza musi mieć grupę plików oznaczoną jako CONTAINS MEMORY_OPTIMIZED_DATA, powiązaną z kontenerem przeznaczonym do obsługi danych i metadanych technologii In-Memory OLTP. Bez tej konfiguracji polecenie utworzenia tabeli zoptymalizowanej pod kątem pamięci zakończy się błędem, niezależnie od tego, czy wybrano SCHEMA_ONLY, czy SCHEMA_AND_DATA.

W definicji tabeli właściwość trwałości zapisuje się jako DURABILITY = SCHEMA_ONLY. Tabela musi mieć również indeks zgodny z regułami tabel memory-optimized. Może to być indeks hashowy, którego liczba zasobników jest określana parametrem BUCKET_COUNT, albo indeks nieklastrowany. Indeksy dla tabel memory-optimized są częścią definicji obiektu i dlatego pozostają dostępne po restarcie razem ze schematem, choć nie zawierają wtedy rekordów. Dobór rodzaju indeksu powinien odpowiadać rzeczywistym predykatom zapytań, ponieważ indeks hashowy jest przeznaczony przede wszystkim do wyszukiwania równościowego.

Przepływ danych i konsekwencje restartu SQL Server

Podczas pracy instancji SQL Server tabela SCHEMA_ONLY może pełnić rolę szybkiego obszaru roboczego dla danych odtwarzalnych, przejściowych albo generowanych ponownie przez aplikację. Przykładem może być zbiór rekordów używany tylko podczas bieżącego przetwarzania, kolejka pomocnicza lub pamięciowy bufor wyników, których źródło znajduje się poza tą tabelą. Kluczową cechą jest możliwość korzystania z danych bez wymagania, aby każdy wiersz został utrwalony w dzienniku transakcji i odtworzony podczas recovery w taki sam sposób jak dane tabeli trwałej.

Po kontrolowanym restarcie silnika, odzyskiwaniu bazy po awarii albo ponownym otwarciu bazy schemat tabeli pozostaje dostępny, ale zawartość nie jest przywracana. Z tego powodu aplikacja korzystająca z SCHEMA_ONLY powinna mieć jasno określoną procedurę inicjalizacji: może ponownie załadować dane, odbudować kolejkę z systemu źródłowego albo rozpocząć pracę z pustym zbiorem. Nie wolno używać tej opcji dla jedynej kopii dokumentów, konfiguracji, historii operacji, rozliczeń ani innych danych, których utrata zmieniłaby stan systemu. Kopia zapasowa bazy zachowuje definicję obiektu, lecz nie zapewnia odtworzenia wierszy zapisanych w tabeli SCHEMA_ONLY.

Dobór SCHEMA_ONLY podczas projektowania bazy

SCHEMA_ONLY należy wybierać wtedy, gdy brak trwałości rekordów jest zamierzony i opisany w projekcie przepływu danych. Przed zastosowaniem tej opcji trzeba oddzielić dane pierwotne od danych pomocniczych. Jeżeli rekord można bezpiecznie wygenerować ponownie, a po restarcie nie jest wymagane zachowanie jego identyfikatora, kolejności lub stanu przetwarzania, tabela bez trwałości danych może być właściwym elementem rozwiązania. Jeżeli natomiast rekord reprezentuje niepowtarzalną operację, samo użycie tabeli memory-optimized nie zastępuje mechanizmu trwałego zapisu.

Weryfikacja powinna obejmować definicję tabeli w katalogu systemowym, obecność właściwości MEMORY_OPTIMIZED = ON, wartość DURABILITY = SCHEMA_ONLY, wymagane indeksy oraz zachowanie aplikacji po ponownym uruchomieniu usługi SQL Server. Należy także sprawdzić, czy mechanizm zasilający tabelę nie zakłada, że dane pozostaną dostępne po restarcie. SCHEMA_ONLY jest konkretnym wyborem semantyki przechowywania: zapewnia trwałość struktury obiektu, ale świadomie rezygnuje z trwałości jego wierszy.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę