Condividi tramite


In-Memory OLTP (In-Memory Ottimizzazione)

Novità di SQL Server 2014 (12.x), In-Memory OLTP può migliorare significativamente le prestazioni dell'applicazione di database OLTP. In-Memory OLTP è un motore di database ottimizzato per la memoria integrato nel motore di SQL Server, ottimizzato per OLTP.

Macchina Virtuale di Azure Vuoi provare SQL Server 2016? Iscriversi a Microsoft Azure e quindi passare qui per avviare una macchina virtuale con SQL Server 2016 già installato. Al termine, è possibile eliminare la macchina virtuale.

Per usare In-Memory OLTP, si definisce una tabella con accesso elevato come ottimizzata per la memoria. Le tabelle ottimizzate per la memoria sono completamente transazionali, durevoli e sono accessibili usando Transact-SQL allo stesso modo delle tabelle basate su disco. Una query può fare riferimento a tabelle ottimizzate per la memoria e tabelle basate su disco. Una transazione può aggiornare i dati nelle tabelle ottimizzate per la memoria e nelle tabelle basate su disco. Le stored procedure che fanno riferimento solo a tabelle ottimizzate per la memoria possono essere compilate in modo nativo nel codice del computer per ulteriori miglioramenti delle prestazioni. Il motore OLTP In-Memory è progettato per una concorrenza delle sessioni estremamente elevata per tipo di transazioni OLTP gestite da un livello intermedio altamente scalabile. A tale scopo, usa strutture dati senza latch e controllo ottimistico della concorrenza multi-versione. Il risultato è prevedibile, con bassa latenza inferiore al millisecondo e un'elevata velocità di trasmissione con scalabilità lineare per le transazioni di database. Il miglioramento effettivo delle prestazioni dipende da molti fattori, ma sono comuni miglioramenti delle prestazioni da 5 a 20 volte.

La tabella seguente riepiloga i modelli di carico di lavoro che possono trarre vantaggio dall'uso di In-Memory OLTP:

Scenario di implementazione Scenario di implementazione Vantaggi di In-Memory OLTP
Frequenza di inserimento dati elevata da più connessioni simultanee. Principalmente archivio solo accodamento.

Impossibile tenere il passo con il carico di lavoro di inserimento.
Eliminare i conflitti.

Ridurre il logging
Le prestazioni di lettura e la scalabilità con inserimenti e aggiornamenti periodici in batch. Operazioni di lettura ad alte prestazioni, in particolare quando ogni richiesta server ha più operazioni di lettura da eseguire.

Non è possibile soddisfare i requisiti di aumento delle prestazioni.
Eliminare la contesa quando arrivano nuovi dati.

Recupero dei dati con latenza inferiore.

Ridurre al minimo il tempo di esecuzione del codice.
Elaborazione intensiva della logica di business nel server di database. Inserire, aggiornare ed eliminare il carico di lavoro.

Calcolo intensivo all'interno di procedure memorizzate.

Contesa di lettura e scrittura.
Eliminare i conflitti.

Ridurre al minimo il tempo di esecuzione del codice per ridurre la latenza e migliorare la velocità effettiva.
Bassa latenza. Necessitano transazioni aziendali a bassa latenza che le soluzioni di database tipiche non possono ottenere. Eliminare i conflitti.

Ridurre al minimo il tempo di esecuzione del codice.

Esecuzione del codice a bassa latenza.

Recupero efficiente dei dati.
Gestione dello stato della sessione. Inserimenti, aggiornamenti e ricerche puntuali frequenti.

Carico su larga scala da numerosi server Web senza stato.
Eliminare i conflitti.

Recupero efficiente dei dati.

Riduzione o rimozione di I/O facoltative quando si usano tabelle non durevoli

Per altre informazioni sugli scenari in cui In-Memory OLTP comporterà i migliori miglioramenti delle prestazioni, vedere In-Memory OLTP - Modelli di carico di lavoro comuni e considerazioni sulla migrazione.

In-Memory OLTP migliorerà le prestazioni in OLTP con transazioni a esecuzione breve.

I modelli di programmazione che In-Memory OLTP miglioreranno includono scenari di concorrenza, ricerche puntuali, carichi di lavoro in cui sono presenti molti inserimenti e aggiornamenti e logica aziendale nelle stored procedure.

L'integrazione con SQL Server consente di disporre di tabelle ottimizzate per la memoria e tabelle basate su disco nello stesso database e di eseguire query su entrambi i tipi di tabelle.

In SQL Server 2014 (12.x) esistono limitazioni nell'area di attacco Transact-SQL supportata per In-Memory OLTP.

In-Memory OLTP consente di ottenere miglioramenti significativi in termini di prestazioni e scalabilità usando:

  • Algoritmi ottimizzati per l'accesso ai dati residenti in memoria.

  • Controllo della concorrenza ottimistica che elimina i blocchi logici.

  • Oggetti privi di blocchi che eliminano tutti i blocchi fisici e i latch. I thread che eseguono operazioni transazionali non usano blocchi o latch per il controllo della concorrenza.

  • Procedure memorizzate compilate nativamente, che offrono prestazioni significativamente migliori rispetto alle procedure interpretate, durante l'accesso a una tabella ottimizzata per la memoria.

Importante

Alcune modifiche della sintassi alle tabelle e alle stored procedure saranno necessarie per usare In-Memory OLTP. Per altre informazioni, vedere Migrazione a In-Memory OLTP. Prima di tentare di eseguire la migrazione di una tabella basata su disco a una tabella ottimizzata per la memoria, vedere Determinare se una tabella o una stored procedure deve essere convertita in In-Memory OLTP per vedere quali tabelle e stored procedure trarranno vantaggio da In-Memory OLTP.

In questa sezione

In questa sezione vengono fornite informazioni sui concetti seguenti:

Argomento Descrizione
Requisiti per l'uso di tabelle ottimizzate per la memoria Vengono illustrati i requisiti hardware e software e le linee guida per l'uso di tabelle ottimizzate per la memoria.
Uso di In-Memory OLTP in un ambiente di macchine virtuali Illustra l'uso di In-Memory OLTP in un ambiente virtualizzato.
esempi di codice OLTPIn-Memory Contiene esempi di codice che illustrano come creare e usare una tabella ottimizzata per la memoria.
Tabelle ottimizzate per la memoria Introduce tabelle ottimizzate per la memoria.
Variabili di tabellaMemory-Optimized Esempio di codice che illustra come usare una variabile di tabella ottimizzata per la memoria anziché una variabile di tabella tradizionale per ridurre l'uso di tempdb.
Indici nelle tabelle Memory-Optimized Introduce gli indici ottimizzati per la memoria.
Procedure memorizzate compilate in modo nativo Introduce stored procedure nativamente compilate.
Gestione della memoria per OLTP in memoria Comprendere e gestire l'utilizzo della memoria nel sistema.
Creazione e gestione dell'archiviazione per gli oggetti con ottimizzazione per la memoria Vengono illustrati i dati e i file differenziali, che archiviano informazioni sulle transazioni nelle tabelle ottimizzate per la memoria.
Eseguire il backup, ripristinare e recuperare tabelle con ottimizzazione per la memoria Discute il backup, il ripristino e il recupero per le tabelle ottimizzate per la memoria.
Supporto di Transact-SQL per OLTP in memoria Discute il sostegno Transact-SQL per In-Memory OLTP.
Supporto della disponibilità elevata per i database OLTP In-Memory Vengono illustrati i gruppi di disponibilità e il clustering di failover in In-Memory OLTP.
Supporto di SQL Server per In-Memory OLTP Elenca la sintassi e le funzionalità nuove e aggiornate che supportano tabelle ottimizzate per la memoria.
Migrazione a OLTP in memoria Viene illustrato come eseguire la migrazione di tabelle basate su disco a tabelle ottimizzate per la memoria.

Altre informazioni su In-Memory OLTP sono disponibili in:

Vedere anche

Funzionalità del database