Udostępnij za pomocą


Uzyskiwanie dostępu do tabel Memory-Optimized przy użyciu Transact-SQL interpretowanych

Dotyczy:programu SQL ServerAzure 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:

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.

Zobacz też

Obsługa Transact-SQL dla In-Memory OLTP

Migrowanie do In-Memory OLTP