Condividi tramite


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

Con solo alcune eccezioni, è possibile accedere a tabelle ottimizzate per la memoria usando qualsiasi query Transact-SQL o operazione DML (SELECT, INSERT, UPDATE o DELETE), batch ad hoc e moduli SQL, ad hoc, ad hoc, come stored procedure, funzioni con valori di tabella, trigger e viste.

Transact-SQL interpretato fa riferimento a batch Transact-SQL o stored procedure diverse da una stored procedure compilata in modo nativo. L'accesso Transact-SQL interpretato alle tabelle ottimizzate per la memoria viene definito accesso di interoperabilità.

È 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 in cui in genere vengono utilizzati costrutti non disponibili in stored procedure compilate in modo nativo, ad esempio funzioni finestra.

  • 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.

I costrutti Transact-SQL seguenti non sono supportati nelle stored procedure Transact-SQL interpretate che accedono 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). L'isolamento SNAPSHOT è stato aggiunto per supportare In-Memory OLTP.

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

HOLDLOCK IGNORE_CONSTRAINTS IGNORE_TRIGGERS NOWAIT
PAGLOCK READCOMMITTED READCOMMITTEDLOCK READPAST
READUNCOMMITTED ROWLOCK SPATIAL_WINDOW_MAX_CELLS = integer TABLOCK
TABLOCKXX UPDLOCK XLOCK

Quando si accede a una tabella ottimizzata per la memoria da una transazione esplicita o implicita usando Transact-SQL interpretato, è necessario includere un hint di tabella a livello di isolamento, ad esempio SNAPSHOT, REPEATABLEREAD o SERIALIZABLE oppure è possibile usare MEMORY_OPTIMIZED_ELEVATE_TO_SNAPSHOT. Per altre informazioni, vedere Linee guida per i livelli di isolamento delle transazioni con tabelle Memory-Optimized e opzioni ALTER DATABASE SET (Transact-SQL).

Nota

Un hint del livello di isolamento non è necessario per le tabelle ottimizzate per la memoria accessibili dalle query in esecuzione in modalità autocommit.

Vedere anche

Supporto di Transact-SQL per OLTP in memoria
Migrazione a OLTP in memoria