Ottimizzazione guidata per la memoriaMemory Optimization Advisor

QUESTO ARGOMENTO SI APPLICA A:sìSQL Server (a partire dalla versione 2014)sìDatabase SQL di AzurenoAzure SQL Data Warehouse noParallel Data Warehouse THIS TOPIC APPLIES TO:yesSQL Server (starting with 2014)yesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

I report di analisi delle prestazioni delle transazioni (vedere Determinare se una tabella o una stored procedure deve essere trasferita a OLTP in memoria) indicano quali tabelle del database trarranno vantaggio se trasferite per usare OLTP in memoria.Transaction Performance Analysis reports (see Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP) informs you about which tables in your database will benefit if ported to use In-Memory OLTP. Dopo aver identificato la tabella da trasferire per usare OLTP in memoria, è possibile usare l'Ottimizzazione guidata per la memoria per eseguire la migrazione della tabella basata su disco in una tabella con ottimizzazione per la memoria.After you identify a table that you would like to port to use In-Memory OLTP, you can use the memory optimization advisor in SQL Server Management Studio to help you migrate the disk-based table to a memory-optimized table.

L'Ottimizzazione guidata per la memoria consente di:The memory-optimization advisor allows you to:

  • Identificare le caratteristiche usate in una tabella basata su disco che non sono supportate per le tabelle con ottimizzazione per la memoria.Identify any features used in a disk-based table that are not supported for memory-optimized tables.

  • Eseguire la migrazione di una tabella e dei dati a una tabella con ottimizzazione della memoria (in assenza di funzionalità non supportate).Migrate a table and data to memory-optimized (if there are no unsupported features).

    Per informazioni sulle metodologie di migrazione, vedere In-Memory OLTP – Common Workload Patterns and Migration Considerations(OLTP in memoria: considerazioni sui modelli di carico di lavoro comuni e sulla migrazione).For information about migration methodologies, see In-Memory OLTP – Common Workload Patterns and Migration Considerations.

Procedura dettagliata per l'utilizzo di Ottimizzazione guidata per la memoriaWalkthrough Using the Memory-Optimization Advisor

In Esplora oggettifare clic con il pulsante destro del mouse sulla tabella che si vuole convertire, quindi selezionare Ottimizzazione guidata per la memoria.In Object Explorer, right click the table you want to convert, and select Memory-Optimization Advisor. Verrà visualizzata la pagina introduttiva per Ottimizzazione guidata per la memoria della tabella.This will display the welcome page for the Table Memory Optimization Advisor.

Elenco di controllo relativo all'ottimizzazione per la memoriaMemory Optimization Checklist

Quando si fa clic su Avanti nella pagina introduttiva di Ottimizzazione guidata per la memoria della tabella, viene visualizzato l'elenco di controllo relativo all'ottimizzazione per la memoria.When you click Next in the welcome page for the Table Memory Optimization Advisor, you will see the memory optimization checklist. Le tabelle con ottimizzazione per la memoria non supportano tutte le funzionalità di una tabella basata su disco.Memory-optimized tables do not support all the features in a disk-based table. Nell'elenco di controllo relativo all'ottimizzazione per la memoria viene indicato se la tabella basata su disco utilizza qualche funzionalità che non è compatibile con un tabella con ottimizzazione per la memoria.The memory optimization checklist reports if the disk-based table uses any features that are incompatible with a memory-optimized table. Poiché l' Ottimizzazione guidata per la memoria della tabella non modifica la tabella basata su disco, è possibile effettuare la migrazione della tabella per usare OLTP in memoria.The Table Memory Optimization Advisor does not modify the disk-based table so that it can be migrated to use In-Memory OLTP. È necessario effettuare queste modifiche manualmente prima di continuare con la migrazione.You must make those changes before continuing migration. Per ogni incompatibilità riscontrata, in Ottimizzazione guidata per la memoria della tabella viene visualizzato un collegamento a informazioni utili per la modifica delle tabelle basate su disco.For each incompatibility found, the Table Memory Optimization Advisor displays a link to information that can help you modify your disk-based tables.

Se si desidera conservare l'elenco delle incompatibilità, per pianificare la migrazione, fare clic su Genera report per generare un elenco HTML.If you wish to keep a list of these incompatibilities, to plan your migration, click the Generate Report to generate a HTML list.

Se la tabella non presenta incompatibilità e si è connessi a un'istanza di SQL Server 2014SQL Server 2014 con OLTP in memoria, fare clic su Avanti.If your table has no incompatibilities and you are connected to a SQL Server 2014SQL Server 2014 instance with In-Memory OLTP, click Next.

Avvisi sull'ottimizzazione per la memoriaMemory Optimization Warnings

Nella pagina successiva, quella degli avvisi relativi all'ottimizzazione per la memoria, è mostrato un elenco di problemi che non impediscono la migrazione della tabella per l'uso di OLTP in memoria, ma che influiscono sul comportamento di altri oggetti (come le stored procedure o le funzioni CLR) generando errori o comportamenti inaspettati.The next page, memory optimization warnings, contains a list of issues that do not prevent the table from being migrated to use In-Memory OLTP, but that may cause the behavior of other objects (such as stored procedures or CLR functions) to fail or result in unexpected behavior.

I primi avvisi nell'elenco hanno scopo informativo e possono o meno valere per la tabella.The first several warnings in the list are informational and may or may not apply to your table. I collegamenti nella colonna di destra della tabella permettono di accedere a ulteriori informazioni.Links in the right-hand column of the table will take you to more information.

Nella tabella degli avvisi vengono inoltre mostrate alcune potenziali condizioni di avviso che non sono presenti nella tabella.The warning table will also display potential warning conditions that are not present in your table.

Gli avvisi correggibili saranno segnalati da un triangolo giallo nella colonna di sinistra.Actionable warnings will have a yellow triangle in the left-hand column. In presenza di avvisi correggibili, si consiglia di uscire dal processo di migrazione, risolvere gli avvisi e riavviare il processo.If there are actionable warnings, you should exit the migration, resolve the warnings, and then restart the process. Se non si risolvono questi avvisi, la tabella potrebbe provocare errori dopo la migrazione.If you do not resolve the warnings, your migrated table may cause a failure.

Per generare un report HTML di questi avvisi, fare clic su Genera report .Click Generate Report to generate an HTML report of these warnings. Fare clic su Avanti per continuare.Click Next to proceed.

Verifica opzioni di ottimizzazioneReview Optimization Options

Nella schermata successiva è possibile modificare le opzioni di migrazione a OLTP in memoria:The next screen lets you modify options for the migration to In-Memory OLTP:

Filegroup con ottimizzazione per la memoriaMemory-optimized filegroup
Nome per il filegroup con ottimizzazione per la memoria.The name for your memory-optimized filegroup. Un database deve avere un filegroup con ottimizzazione per la memoria con almeno un file per poter creare una tabella con ottimizzazione per la memoria.A database must have a memory-optimized filegroup with at least one file before a memory-optimized table can be created.

Se non si dispone di un filegroup con ottimizzazione per la memoria, è possibile modificare il nome predefinito.If you do not have a memory-optimized filegroup, you can change the default name. I filegroup con ottimizzazione per la memoria non possono essere eliminati.Memory-optimized filegroups cannot be deleted. La presenza di un filegroup con ottimizzazione per la memoria può disabilitare alcune funzionalità a livello di database come AUTO CLOSE e il mirroring del database.The existence of a memory-optimized filegroup may disable some database-level features such as AUTO CLOSE and database mirroring.

Se il database dispone già di un filegroup con ottimizzazione per la memoria, questo campo sarà già popolato con il relativo nome e non sarà possibile modificarlo.If a database already has a memory-optimized file group, this field will be pre-populated with its name and you will not be able to change the value of this field.

Nome file logico e Percorso fileLogical file name and File path
Nome del file che conterrà la tabella con ottimizzazione per la memoria.The name of the file that will contain the memory-optimized table. Un database deve avere un filegroup con ottimizzazione per la memoria con almeno un file per poter creare una tabella con ottimizzazione per la memoria.A database must have a memory-optimized file group with at least one file before a memory-optimized table can be created.

In assenza di un filegroup con ottimizzazione per la memoria, è possibile modificare il nome predefinito e il percorso del file che sarà creato alla fine del processo di migrazione.If you do not have an existing memory-optimized file group, you can change the default name and path of the file to be created at the end of the migration process.

In presenza di un filegroup con ottimizzazione per la memoria, questi campi saranno già popolati e non sarà possibile modificarli.If you have an existing memory-optimized filegroup, these fields will be pre-populated and you will not be able to change the values.

Rinomina la tabella originale comeRename the original table as
Al termine del processo di migrazione, verrà creata una nuova tabella con ottimizzazione per la memoria con il nome corrente della tabella.At the end of the migration process, a new memory-optimized table will be created with the current name of the table. Per evitare un conflitto di nomi, la tabella corrente deve essere rinominata.To avoid a name conflict, the current table must be renamed. Il nome può essere modificato in questo campo.You may change that name in this field.

Costo memoria corrente stimato (MB)Estimated current memory cost (MB)
In Ottimizzazione guidata per la memoria viene stimata automaticamente la quantità di memoria che sarà utilizzata dalla nuova tabella con ottimizzazione per la memoria in base ai metadati della tabella basata su disco.The Memory-Optimization Advisor estimates the amount of memory the new memory-optimized table will consume based on metadata of the disk-based table. Il calcolo delle dimensioni della tabella è descritto in Dimensioni di tabelle e righe per le tabelle con ottimizzazione per la memoria.The calculation of the table size is explained in Table and Row Size in Memory-Optimized Tables.

Se non è allocata una quantità di memoria sufficiente, il processo di migrazione potrebbe non riuscire.If sufficient memory is not allotted, the migration process may fail.

Copia anche i dati della tabella nella nuova tabella con ottimizzazione per la memoriaAlso copy table data to the new memory optimized table
Selezionare questa opzione se si desidera spostare anche i dati della tabella corrente nella tabella con ottimizzazione per la memoria.Select this option if you wish to also move the data in the current table to the new memory-optimized table. Se questa opzione non viene selezionata, la nuova tabella con ottimizzazione per la memoria non conterrà righe.If this option is not selected, the new memory-optimized table will be created with no rows.

Per impostazione predefinita, verrà eseguita la migrazione della tabella come tabella durevole.The table will be migrated as a durable table by default
OLTP in memoria supporta le tabelle non durevoli con prestazioni superiori rispetto alle tabelle con ottimizzazione per la memoria durevoli.In-Memory OLTP supports non-durable tables with superior performance compared to durable memory-optimized tables. Tuttavia, i dati in una tabella non durevole verranno persi al riavvio del server.However, data in a non-durable table will be lost upon server restart.

Se questa opzione è selezionata, in Ottimizzazione guidata per la memoria verrà creata una tabella non durevole anziché una durevole.If this option is selected, the Memory-Optimization Advisor will create a non-durable table instead of a durable table.

Avviso

Selezionare questa opzione solo se si comprende il rischio della perdita dei dati con le tabelle non durevoli.Select this option only if you understand the risk of data loss associated with non-durable tables.

Per continuare, fare clic su Avanti .Click Next to continue.

Verifica conversione chiave primariaReview Primary Key Conversion

La schermata successiva è denominata Verifica conversione chiave primaria.The next screen is Review Primary Key Conversion. In Ottimizzazione guidata per la memoria viene rilevato se nella tabella sono presenti una o più chiavi primarie e viene popolato l'elenco di colonne in base ai metadati delle chiavi primarie.The Memory-Optimization Advisor will detect if there are one or more primary keys in the table, and populates the list of columns based on the primary key metadata. Se non è presente alcuna chiave primaria, per eseguire la migrazione a una tabella con ottimizzazione per la memoria durevole, sarà necessario crearne una.Otherwise, if you wish to migrate to a durable memory-optimized table, you must create a primary key.

Se non esiste una chiave primaria e viene eseguita la migrazione della tabella in una tabella non durevole, questa schermata non verrà visualizzata.If a primary key doesn’t exist and the table is being migrated to a non-durable table, this screen will not appear.

Per le colonne testuali (le colonne con i tipi char, nchar, varchare nvarchar) è necessario selezionare le regole di confronto appropriate.For textual columns (columns with types char, nchar, varchar, and nvarchar) you must select an appropriate collation. OLTP in memoria supporta solo le regole di confronto BIN2 per le colonne in una tabella con ottimizzazione per la memoria e non supporta le regole di confronto con i caratteri supplementari.In-Memory OLTP only supports BIN2 collations for columns on a memory-optimized table and it does not support collations with supplementary characters. Per informazioni sulle regole di confronto supportate e sull'impatto potenziale di una modifica a una regola di confronto, vedere Collations and Code Pages .See Collations and Code Pages for information on the collations supported and the potential impact of a change in collation.

È possibile configurare i seguenti parametri per la chiave primaria:You can configure the following parameters for the primary key:

Selezionare un nuovo nome per la chiave primariaSelect a new name for this primary key
Il nome della chiave primaria per questa tabella deve essere univoco all'interno del database.The primary key name for this table must be unique inside the database. È possibile modificare il nome della chiave primaria qui.You may change the name of the primary key here.

Selezionare il tipo di chiave primariaSelect the type of this primary key
OLTP in memoria supporta due tipi di indici in una tabella con ottimizzazione per la memoria:In-Memory OLTP supports two types of indexes on a memory-optimized table:

  • L'indice HASH NON CLUSTER.A NONCLUSTERED HASH index. Questo indice è ideale per gli indici con ricerche in molti punti.This index is best for indexes with many point lookups. È possibile configurare il conteggio dei bucket per questo indice nel campo Numero di bucket .You may configure the bucket count for this index in the Bucket Count field.

  • L'indice NON CLUSTER.A NONCLUSTERED index. Questo tipo di indice è ideale per gli indici con molte query di intervallo.This type of index is best for indexes with many range queries. È possibile configurare l'ordinamento per ciascuna colonna nell'elenco Colonna di ordinamento e ordine .You may configure the sort order for each column in the Sort column and order list.

    Per individuare il tipo di indice più adatto alla chiave primaria, vedere Indici hash.To understand the type of index best for your primary key, see Hash Indexes.

    Una volta selezionate le opzioni per la chiave primaria, fare clic su Avanti .Click Next after you make your primary key choices.

Verifica conversione indiceReview Index Conversion

La pagina successiva è denominata Verifica conversione indice.The next page is Review Index Conversion. In Ottimizzazione guidata per la memoria viene rilevato se nella tabella sono presenti uno o più indici e vengono popolati l'elenco di colonne e il tipo di dati.The Memory-Optimization Advisor will detect if there are one or more indexes in the table, and populates the list of columns and data type. I parametri che è possibile configurare nella pagina Verifica conversione indice sono simili a quelli della pagina Verifica conversione chiave primaria .The parameters you can configure in the Review Index Conversion page are similar to the previous, Review Primary Key Conversion page.

Se la tabella contiene solo una chiave primaria e viene sottoposta a migrazione in una tabella durevole, questa schermata non verrà visualizzata.If the table only has a primary key and it’s being migrated to a durable table, this screen will not appear.

Una volta impostate le opzioni per ciascun indice nella tabella, fare clic su Avanti.After you make a decision for every index in your table, click Next.

Verifica azioni di migrazioneVerify Migration Actions

La pagina successiva è denominata Verifica azioni di migrazione.The next page is Verify Migration Actions. Per generare lo script dell'operazione di migrazione, fare clic su Script per generare uno script Transact-SQLTransact-SQL .To script the migration operation, click Script to generate a Transact-SQLTransact-SQL script. Sarà quindi possibile modificare ed eseguire lo script.You may then modify and execute the script. Fare clic su Esegui migrazione per avviare la migrazione della tabella.Click Migrate to begin the table migration.

Al termine, aggiornare Esplora oggetti per visualizzare la nuova tabella con ottimizzazione per la memoria e la vecchia tabella basata su disco.After the process is finished, refresh Object Explorer to see the new memory-optimized table and the old disk-based table. La vecchia tabella può essere conservata o eliminata a seconda delle proprie esigenze.You can keep the old table or delete it at your convenience.

Vedere ancheSee Also

Migrazione a OLTP in memoriaMigrating to In-Memory OLTP