Accesso alle tabelle con ottimizzazione per la memoria utilizzando codice Transact-SQL interpretato

Si applica a: SQL Server Database SQL di Azure Not supported. Azure Synapse Analytics Not supported. Piattaforma di strumenti analitici (PDW)

Salvo poche eccezioni, è possibile accedere alle tabelle ottimizzate per la memoria usando qualsiasi query Transact-SQL o operazione DML (selezione, inserimento, aggiornamento o eliminazione), batch ad hoc e moduli SQL quali stored procedure, funzioni con valori di tabella, trigger e viste.

Transact-SQL interpretato fa riferimento a batch o stored procedure Transact-SQL diverse da stored procedure compilate in modo nativo. L'accesso Transact-SQL interpretato a tabelle ottimizzate per la memoria è denominato accesso di interoperabilità.

A partire da SQL Server 2016 (13.x), le query in Transact-SQL interpretato possono analizzare le tabelle ottimizzate per la memoria in parallelo, invece che solo in modalità seriale.

È inoltre possibile accedere alle tabelle con ottimizzazione per la memoria tramite una stored procedure compilata in modo nativo. Le stored procedure compilate in modo nativo sono consigliate in caso di operazioni OLTP critiche per le prestazioni.

L'accesso Transact-SQL interpretato è consigliato per questi scenari:

  • Query ad hoc e attività amministrative.

  • Query di report che in genere usano costrutti non disponibili nelle stored procedure compilate in modo nativo, come le funzioni finestra , anche note come funzioni OVER .

  • Per eseguire la migrazione di parti dell'applicazione critiche per le prestazioni a tabelle ottimizzate per la memoria, con modifiche minime al codice dell'applicazione o addirittura nessuna. È possibile che si ottengano dei miglioramenti delle prestazioni dalla migrazione delle tabelle. Se quindi si esegue la migrazione di stored procedure a stored procedure compilate in modo nativo, è possibile che si ottengano miglioramenti ulteriori.

  • Quando un'istruzione Transact-SQL non è disponibile per stored procedure compilate in modo nativo.

Tuttavia, i costrutti Transact-SQL seguenti non sono supportati in stored procedure Transact-SQL interpretate mediante le quali si accede ai dati in una tabella ottimizzata per la memoria.

Area Non supportato
Accesso a tabelle TRUNCATE TABLE

MERGE (tabella ottimizzata per la memoria come destinazione)

Cursori Dynamic e Keyset (diventano automaticamente Static).

Accesso dai moduli CLR, utilizzando la connessione del contesto.

Riferimento a una tabella ottimizzata per la memoria da una vista indicizzata.
Tra database Query tra database

Transazioni tra database

Server collegati

Hint di tabella

Per ulteriori informazioni sugli hint di tabella, vedere Hint di tabella (Transact-SQL). È stato aggiunto SNAPSHOT per supportare OLTP in memoria.

Gli hint di tabella seguenti non sono supportati quando si accede a una tabella ottimizzata per la memoria utilizzando Transact-SQL interpretato.

HOLDLOCK

PAGLOCK

READUNCOMMITTED

TABLOCKXX

IGNORE_CONSTRAINTS

READCOMMITTED

ROWLOCK

UPDLOCK

IGNORE_TRIGGERS

READCOMMITTEDLOCK

SPATIAL_WINDOW_MAX_CELLS = integer

XLOCK

NOWAIT

READPAST

TABLOCK

Quando si accede a una tabella ottimizzata per la memoria da una transazione esplicita o implicita usando Transact-SQL interpretato, è necessario eseguire almeno una delle operazioni seguenti:

Un hint di tabella del livello di isolamento non è necessario per le tabelle ottimizzate per la memoria a cui accedono query in esecuzione in modalità autocommit.

Vedi anche

Supporto di Transact-SQL per OLTP in memoria

Migrazione a OLTP in memoria