Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:programu SQL Server
Azure SQL Database
Z nielicznymi wyjątkami, dostęp do tabel zoptymalizowanych pod kątem pamięci można uzyskać za pomocą dowolnych zapytań Transact-SQL lub operacji DML (select, insert, update, delete), a także partii ad hoc i modułów SQL, takich jak procedury składowane, funkcje zwracające tabelę, wyzwalacze i widoki.
Interpretowane Transact-SQL odnosi się do partii Transact-SQL lub procedur składowanych, które nie są natywnie skompilowanymi procedurami składowanymi. Dostęp za pomocą interpretowanego Transact-SQL do tabel zoptymalizowanych dla pamięci jest określany jako dostęp interop.
Począwszy od programu SQL Server 2016 (13.x), zapytania w interpretowanych Transact-SQL mogą równolegle skanować tabele zoptymalizowane pod kątem pamięci, a nie tylko w trybie seryjnym.
Dostęp do tabel zoptymalizowanych pod kątem pamięci można również uzyskać przy użyciu natywnie skompilowanej procedury składowanej. Natywnie skompilowane procedury składowane są zalecane w przypadku operacji OLTP o znaczeniu krytycznym dla wydajności.
W następujących scenariuszach zaleca się interpretowany dostęp Transact-SQL:
Zapytania ad hoc i zadania administracyjne.
Zapytania służące do raportowania, które zwykle używają konstrukcji niedostępnych w natywnie skompilowanych procedurach składowanych (takich jak funkcje okienkowe, czasami nazywane funkcjami OVER).
Aby przeprowadzić migrację krytycznych dla wydajności części aplikacji do tabel zoptymalizowanych pod kątem pamięci, przy minimalnych (lub nie) zmianach kodu aplikacji. Możesz potencjalnie zobaczyć ulepszenia wydajności z migrowania tabel. W przypadku migracji procedur składowanych do natywnie skompilowanych procedur składowanych może być widoczna dalsza poprawa wydajności.
Jeśli instrukcja Transact-SQL nie jest dostępna dla natywnie skompilowanych procedur składowanych.
Jednak następujące konstrukcje Transact-SQL nie są obsługiwane w interpretowanych Transact-SQL procedur składowanych, które uzyskują dostęp do danych w tabeli zoptymalizowanej pod kątem pamięci.
| Area | Nieobsługiwane |
|---|---|
| Dostęp do tabel | TRUNCATE TABLE MERGE (tabela zoptymalizowana pod kątem pamięci jako docelowa) Dynamiczne i dynamiczne kursory zestawów kluczy (te automatycznie obniżają wydajność do statycznej). Dostęp z modułów CLR przy użyciu połączenia kontekstowego. Odwoływanie się do tabeli zoptymalizowanej pod kątem pamięci z widoku indeksowanego. |
| Między bazami danych | Zapytania obejmujące wiele baz danych Transakcje obejmujące wiele baz danych Połączone serwery |
Wskazówki dotyczące tabeli
Aby uzyskać więcej informacji na temat wskazówek dotyczących tabel, zobacz. Wskazówki dotyczące tabeli (Transact-SQL). Migawka została dodana do obsługi In-Memory OLTP.
Poniższe wskazówki dotyczące tabeli nie są obsługiwane podczas uzyskiwania dostępu do tabeli zoptymalizowanej pod kątem pamięci przy użyciu interpretowanego języka Transact-SQL.
HOLDLOCK
PAGLOCK
READUNCOMMITTED
TABLOCKXX
IGNORE_CONSTRAINTS
READCOMMITTED
ROWLOCK
UPDLOCK
IGNORE_TRIGGERS
READCOMMITTEDLOCK
SPATIAL_WINDOW_MAX_CELLS = liczba całkowita
XLOCK
NOWAIT
READPAST
TABLOCK
Podczas uzyskiwania dostępu do tabeli zoptymalizowanej pod kątem pamięci z jawnej lub niejawnej transakcji przy użyciu interpretowanego języka Transact-SQL należy wykonać co najmniej jedną z następujących czynności:
Określ wskazówkę tabeli na poziomie izolacji , taką jak SNAPSHOT, REPEATABLEREAD lub SERIALIZABLE.
Ustaw opcję bazy danych MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT na WŁ.
Wskazówka tabeli na poziomie izolacji nie jest wymagana w przypadku tabel zoptymalizowanych pod kątem pamięci, do których uzyskiwany jest dostęp przez zapytania działające w trybie automatycznego zatwierdzania.