Determinare se una tabella o una stored procedure deve essere trasferita a OLTP in memoriaDetermining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP

In questo argomento si applica a: SìSQL ServerSìDatabase SQL di AzurenonAzure SQL Data Warehouse non Parallel Data WarehouseTHIS TOPIC APPLIES TO: yesSQL ServeryesAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

Il report di analisi delle prestazioni delle transazioni in SQL Server Management StudioSQL Server Management Studio consente di valutare se OLTP in memoria è in grado di ottimizzare le prestazioni dell'applicazione di database.The Transaction Performance Analysis report in SQL Server Management StudioSQL Server Management Studio helps you evaluate if In-Memory OLTP will improve your database application’s performance. Il report indica anche la quantità di operazioni che è necessario eseguire per abilitare OLTP in memoria nell'applicazione.The report also indicates how much work you must do to enable In-Memory OLTP in your application. Una volta identificata la tabella basata su disco da trasferire in OLTP in memoria, è possibile usare Ottimizzazione guidata per la memoriaper semplificarne la migrazione.After you identify a disk-based table to port to In-Memory OLTP, you can use the Memory Optimization Advisor, to help you migrate the table. Analogamente, l' Native Compilation Advisor semplifica il trasferimento di una stored procedure a una stored procedure compilata in modo nativo.Similarly, the Native Compilation Advisor will help you port a stored procedure to a natively compiled stored procedure. Per informazioni sulle metodologie di migrazione, vedere la pagina relativa a In-Memory OLTP - Common Workload Patterns and Migration Considerations(OLTP in memoria: considerazioni sulla migrazione e sui modelli di carico di lavoro comuni).For information about migration methodologies, see In-Memory OLTP – Common Workload Patterns and Migration Considerations.

Il report di analisi delle prestazioni delle transazioni viene eseguito direttamente su un database di produzione o un database di prova con un carico di lavoro attivo simile al carico di lavoro di produzione.The Transaction Performance Analysis report is run directly against the production database, or a test database with an active workload that is similar to the production workload.

Il report e gli assistenti alla migrazione consentono di eseguire le attività seguenti:The report and migration advisors help you accomplish the following tasks:

  • Analizzare il carico di lavoro per determinare le aree sensibili in cui OLTP in memoria può potenzialmente contribuire a migliorare le prestazioni.Analyze your workload to determine hot spots where In-Memory OLTP can potentially help to improve performance. Il report di analisi delle prestazioni delle transazioni suggerisce tabelle e stored procedure per cui la conversione in OLTP in memoria potrebbe risultare utile.The Transaction Performance Analysis report recommends tables and stored procedures that would benefit most from conversion to In-Memory OLTP.

  • Facilitare la pianificazione e l'esecuzione della migrazione a OLTP in memoria.Help you plan and execute your migration to In-Memory OLTP. Il percorso di migrazione da una tabella basata su disco a una tabella ottimizzata per la memoria può richiedere tempi lunghi.The migration path from a disk based table to a memory-optimized table can be time consuming. L'Ottimizzazione guidata per la memoria consente di identificare le incompatibilità presenti nella tabella che devono essere rimosse prima dello spostamento della tabella in OLTP in memoria.The Memory-Optimization Advisor helps you identify the incompatibilities in your table that you must remove before moving the table to In-Memory OLTP. Lo strumento di ottimizzazione per la memoria consente inoltre di comprendere l'impatto che la migrazione di una tabella a una tabella ottimizzata per la memoria avrà sull'applicazione.The Memory-Optimization Advisor also helps you understand the impact that the migration of a table to a memory-optimized table will have on your application.

    È possibile verificare se OLTP in memoria può costituire un vantaggio per l'applicazione, quando si desidera pianificare la migrazione a OLTP in memoria e ogni volta che si procede alla migrazione di alcune tabelle e stored procedure a OLTP in memoria.You can see if your application would benefit from In-Memory OLTP, when you want to plan your migration to In-Memory OLTP, and whenever you work to migrate some of your tables and stored procedures to In-Memory OLTP.

    Importante

    Le prestazioni di un sistema di database dipendono da molti fattori, non tutti osservabili e misurabili tramite l'agente di raccolta delle prestazioni delle transazioni.The performance of a database system is dependent on a variety of factors, not all of which the transaction performance collector can observe and measure. Pertanto, il report di analisi delle prestazioni delle transazioni non è in grado di garantire che i miglioramenti effettivi delle prestazioni corrisponderanno alle eventuali stime eseguite.Therefore, the transaction performance analysis report does not guarantee actual performance gains will match its predictions, if any predictions are made.

    Il report di analisi delle prestazioni delle transazioni e gli assistenti alla migrazione vengono installati come parte di SQL Server Management Studio (SSMS) quando si seleziona Strumenti di gestione - Di base o Strumenti di gestione - Avanzati quando si installa SQL Server 2017SQL Server 2017oppure quando si sceglie di Scaricare SQL Server Management Studio (SSMS).The Transaction Performance Analysis report and the migration advisors are installed as part of SQL Server Management Studio (SSMS) when you select Management Tools—Basic or Management Tools—Advanced when you install SQL Server 2017SQL Server 2017, or when you Download SQL Server Management Studio.

Report di analisi delle prestazioni delle transazioniTransaction Performance Analysis Reports

Per generare report di analisi delle prestazioni delle transazioni in Esplora oggetti fare clic con il pulsante destro del mouse sul database, scegliere Report, quindi Report standarde infine Panoramica dell'analisi delle prestazioni delle transazioni.You can generate transaction performance analysis reports in Object Explorer by right-clicking on the database, selecting Reports, then Standard Reports, and then Transaction Performance Analysis Overview. Per generare un report di analisi significativo, è richiesto un carico di lavoro attivo o di recente esecuzione del database.The database needs to have an active workload, or a recent run of a workload, in order to generate a meaningful analysis report.

TabelleTables

Il report dettagli per una tabella è costituito da tre sezioni:The details report for a table consists of three sections:

  • Sezione relativa alle statistiche sull'analisiScan Statistics Section

    In questa sezione è inclusa una singola tabella in cui sono indicate le statistiche raccolte sulle analisi nella tabella di database.This section includes a single table that shows the statistics that were collected about scans on the database table. Le colonne sono:The columns are:

    • Percentuale di accessi totali.Percent of total accesses. Percentuale di analisi e ricerche in questa tabella rispetto all'attività dell'intero database.The percentage of scans and seeks on this table with respect to the activity of the entire database. Più alta è questa percentuale, molto più frequente è l'utilizzo della tabella confrontata con altre tabelle del database.The higher this percentage, the more heavily used the table is compared to other tables in the database.

    • Statistiche di ricerca/Statistiche analisi intervallo.Lookup Statistics/Range Scan Statistics. In questa colonna vengono registrati il numero di ricerche di punti e di analisi di intervalli (analisi di indici e scansioni di tabelle) eseguite sulla tabella durante la profilatura.This column records the number of point lookups and range scans (index scans and table scans) conducted on the table during profiling. La media per ogni transazione è una stima.Average per transaction is an estimate.

  • Sezione relativa alle statistiche sulle conteseContention Statistics Section

    In questa sezione è inclusa una tabella in cui viene mostrata la contesa nella tabella di database.This section includes a table that shows contention on the database table. Per altre informazioni su latch e blocchi del database, vedere la pagina relativa all'architettura di blocco.For more information regarding database latches and locks, please see Locking Architecture. Le colonne sono le seguenti:The columns are as follows:

    • Percentuale di attese totali.Percent of total waits. Percentuale di attese di blocchi e di latch in questa tabella di database rispetto all'attività del database.The percentage of latch and lock waits on this database table compared to activity of the database. Più alta è questa percentuale, molto più frequente è l'utilizzo della tabella confrontata con altre tabelle del database.The higher this percentage, the more heavily used the table is compared to other tables in the database.

    • Statistiche latch.Latch Statistics. In queste colonne viene registrato il numero di attese di latch per query che interessano questa tabella.These columns record the number of latch waits for queries involving for this table. Per altre informazioni, vedere la pagina relativa ai latch.For information on latches, see Latching. Più elevato è questo numero, maggiore è la contesa di latch nella tabella.The higher this number, the more latch contention on the table.

    • Statistiche blocchi.Lock Statistics. In questo gruppo di colonne viene registrato il numero di acquisizioni e attese dei blocchi di pagina per query per la tabella.This group of columns record the number of page lock acquisitions and waits for queries for this table. Per altre informazioni sui blocchi, vedere la pagina relativa alle informazioni sul blocco in SQL Server.For more information on locks, see Understanding Locking in SQL Server. Più attese vi sono, maggiore è la contesa di blocchi nella tabella.The more waits, the more lock contention on the table.

  • Sezione relativa alle difficoltà nella migrazioneMigration Difficulties Section

    In questa sezione è inclusa una tabella in cui vengono mostrate le difficoltà di conversione della tabella di database in una tabella ottimizzata per la memoria.This section includes a table that shows the difficulty of converting this database table to a memory-optimized table. Un grado di difficoltà più elevato indica una maggiore difficoltà di conversione della tabella.A higher difficulty rating indicates more difficultly to convert the table. Per visualizzare i dettagli relativi alla conversione di questa tabella di database, usare l'Ottimizzazione guidata per la memoria.To see details to convert this database table, please use the Memory Optimization Advisor.

Le statistiche sulle contese e sulle analisi nel report dettagli della tabella vengono raccolte e aggregate da sys.dm_db_index_operational_stats (Transact-SQL).Scan and contention statistics on the table details report is gathered and aggregated from sys.dm_db_index_operational_stats (Transact-SQL).

Stored procedureStored Procedures

Una stored procedure con un alto rapporto di tempo di utilizzo della CPU rispetto al tempo trascorso è una candidata per la migrazione.A stored procedure with high ratio of CPU time to elapsed time is a candidate for migration. Il report include tutti i riferimenti alle tabelle perché le stored procedure compilate in modo nativo possono fare riferimento solo alle tabelle ottimizzate per la memoria che possono costituire un'aggiunta al costo di migrazione.The report shows all table references, because natively compiled stored procedures can only reference memory-optimized tables, which can add to the migration cost.

Il report dettagli per una stored procedure è costituito da due sezioni:The details report for a stored procedure consists of two sections:

  • Sezione relativa alle statistiche di esecuzioneExecution Statistics Section

    In questa sezione è inclusa una tabella in cui sono indicate le statistiche raccolte sulle esecuzioni della stored procedure.This section includes a table that shows the statistics that were collected about the stored procedure’s executions. Le colonne sono le seguenti:The columns are as follows:

    • Ora di memorizzazione nella cache.Cached Time. Ora di memorizzazione nella cache di questo piano di esecuzione.The time this execution plan is cached. Se la stored procedure viene ritirata dalla cache dei piani e poi reinserita, verranno indicate le ore per ogni memorizzazione nella cache.If the stored procedure drops out of the plan cache and re-enters, there will be times for each cache.

    • Tempo totale CPU.Total CPU Time. Tempo totale CPU utilizzato dalla stored procedure durante la profilatura.The total CPU time that the stored procedure consumed during profiling. Più alto è questo numero, maggiore è l'utilizzo della CPU da parte della stored procedure.The higher this number, the more CPU the stored procedure used.

    • Tempo di esecuzione totale.Total Execution Time. Tempo di esecuzione totale utilizzato dalla stored procedure durante la profilatura.The total amount of execution time the stored procedure used during profiling. Maggiore è la differenza tra questo numero e il tempo CPU, minore è l'utilizzo della CPU in modo efficace da parte della stored procedure.The higher the difference between this number and the CPU time is, the less efficiently the stored procedure is using the CPU.

    • Totale riscontri cache mancati.Total Cache Missed. Numero di mancati riscontri nella cache (letture dall'archiviazione fisica) causato dalle esecuzioni della stored procedure durante la profilatura.The number of cache misses (reads from physical storage) that is caused by the stored procedure’s executions during profiling.

    • Conteggio esecuzioni.Execution Count. Numero di esecuzioni della stored procedure durante la profilatura.The number of times this stored procedure executed during profiling.

  • Sezione relativa ai riferimenti a tabelleTable References Section

    In questa sezione è inclusa una tabella in cui vengono mostrate le tabelle a cui fa riferimento questa stored procedure.This section includes a table that shows the tables to which this stored procedure refers. Prima di convertire la stored procedure in una stored procedure compilata a livello nativo, tutte queste tabelle devono essere convertite in tabelle ottimizzate per la memoria e devono rimanere nello stesso server e database.Before converting the stored procedure into a natively compiled stored procedure, all of these tables must be converted to memory-optimized tables, and they must stay on the same server and database.

    Le statistiche relative alle esecuzioni nel report dettagli della stored procedure vengono raccolte e aggregate da sys.dm_exec_procedure_stats (Transact-SQL).Execution Statistics on the stored procedure details report is gathered and aggregated from sys.dm_exec_procedure_stats (Transact-SQL). I riferimenti sono ottenuti da sys.sql_expression_dependencies (Transact-SQL).The references are obtained from sys.sql_expression_dependencies (Transact-SQL).

    Per visualizzare i dettagli relativi a come convertire una stored procedure in una stored procedure compilata in modo nativo, usare l'Assistente compilazione nativa.To see details about how to convert a stored procedure to a natively compiled stored procedure, please use the Native Compilation Advisor.

Generazione guidata di elenchi di controllo per migrazione OLTP in memoriaGenerating In-Memory OLTP Migration Checklists

Gli elenchi di controllo per migrazione identificano qualsiasi funzionalità di stored procedure o tabella non supportata con tabelle ottimizzate per la memoria o stored procedure compilate in modo nativo.Migration checklists identify any table or stored procedure features that are not supported with memory-optimized tables or natively compiled stored procedures. L'ottimizzazione guidata della memoria e l'assistente compilazione nativa possono generare un elenco di controllo per una singola tabella basata su disco o stored procedure T-SQL interpretata.The memory-optimization and native compilation advisors can generate a checklist for a single disk-based table or interpreted T-SQL stored procedure. Gli elenchi di controllo per migrazione possono essere creati per più tabelle e stored procedure in un database.It is also possible to generation migration checklists for multiple tables and stored procedures in a database.

È possibile generare un elenco di controllo per la migrazione in SQL Server Management StudioSQL Server Management Studio usando il comando Generazione guidata elenchi di controllo per migrazione OLTP in memoria o tramite PowerShell.You can generate a migration checklist in SQL Server Management StudioSQL Server Management Studio by using the Generate In-Memory OLTP Migration Checklists command or by using PowerShell.

Per generare un elenco di controllo per migrazione tramite il comando dell'interfaccia utenteTo generate a migration checklist using the UI command

  1. In Esplora oggettifare clic con il pulsante destro del mouse su un database diverso dal database di sistema, scegliere Attivitàe quindi fare clic su Generazione guidata elenchi di controllo per migrazione OLTP in memoria.In Object Explorer, right click a database other than the system database, click Tasks, and then click Generate In-Memory OLTP Migration Checklists.

  2. Nella finestra di dialogo Generazione guidata elenchi di controllo per migrazione OLTP in memoria fare clic su Avanti per passare alla pagina Configura opzioni di generazione elenchi di controllo .In the Generate In-Memory OLTP Migration Checklists dialog box, click Next to navigate to the Configure Checklist Generation Options page. In questa pagina eseguire le operazioni seguenti.On this page do the following.

    1. Immettere un percorso cartella nella casella di controllo Salva elenco di controllo in .Enter a folder path in the Save checklist to box.

    2. Verificare che l'opzione Genera elenchi di controllo per tabelle e stored procedure specifiche sia selezionata.Verify that Generate checklists for specific tables and stored procedures is selected.

    3. Espandere i nodi Tabella e Stored procedure nella casella di selezione.Expand the Table and Stored Procedure nodes in the section box.

    4. Selezionare alcuni oggetti nella casella di selezione.Select a few objects in the selection box.

  3. Fare clic su Avanti e verificare che l'elenco di attività corrisponda alle impostazioni nella pagina Configura opzioni di generazione elenco di controllo .Click Next and confirm that the list of tasks matches your settings on the Configure Checklist Generation Options page.

  4. Fare clic su Finee quindi verificare che i report degli elenchi di controllo per migrazione siano stati generati solo per gli oggetti selezionati.Click Finish, and then confirm that migration checklist reports were generated only for the objects you selected.

    È possibile verificare l'accuratezza dei report confrontandoli con i report generati dagli strumenti Ottimizzazione guidata per la memoria e Assistente compilazione nativa.You can verify the accuracy of the reports by comparing them to reports generated by the Memory Optimization Advisor tool and the Native Compilation Advisor tool. Per ulteriori informazioni, vedere Memory Optimization Advisor e Native Compilation Advisor.For more information, see Memory Optimization Advisor and Native Compilation Advisor.

Per generare un elenco di controllo per migrazione tramite SQL Server PowerShellTo generate a migration checklist using SQL Server PowerShell

  1. In Esplora oggettifare clic su un database e quindi scegliere Avvia PowerShell.In Object Explorer, click on a database and then click Start PowerShell. Verificare che sia visualizzato il prompt seguente.Verify that the following prompt appears.

    PS SQLSERVER: \SQL\{Instance Name}\DEFAULT\Databases\{two-part DB Name}>  
    
  2. Immettere il comando riportato di seguito.Enter the following command.

    Save-SqlMigrationReport –FolderPath “<folder_path>”  
    
  3. Verificare quanto segue.Verify the following.

    • Il percorso della cartella viene creato, se inesistente.The folder path is created, if it doesn’t already exist.

    • Il report dell'elenco di controllo per migrazione viene generato per tutte le tabelle e stored procedure nel database e archiviato nella posizione specificata da folder_path.The migration checklist report is generated for all tables and stored procedures in the database, and the report is in the location specified by folder_path.

Per generare un elenco di controllo per migrazione tramite Windows PowerShellTo generate a migration checklist using Windows PowerShell

  1. Avviare una sessione di Windows PowerShell elevata.Start an elevated Windows PowerShell session.

  2. Immettere i comandi seguenti.Enter the following commands. L'oggetto può essere una tabella o una stored procedure.The object can either be a table or a stored procedure.

    [System.Reflection.Assembly]::LoadWithPartialName('Microsoft.SqlServer.SMO')  
    
    Save-SqlMigrationReport –Server "<instance_name>" -Database "<db_name>" -FolderPath "<folder_path1>"  
    
    Save-SqlMigrationReport –Server "<instance_name>" -Database "<db_name>" -Object <object_name> -FolderPath "<folder_path2>"  
    
  3. Verificare quanto segue.Verify the following.

    • Un report dell'elenco di controllo per migrazione viene generato per tutte le tabelle e stored procedure nel database e archiviato nella posizione specificata da folder_path.A migration checklist report is generated for all tables and stored procedures in the database, and the report is in the location specified by folder_path.

    • Il report dell'elenco di controllo per migrazione per <object_name> è l'unico report nella posizione specificata da folder_path2.A migration checklist report for <object_name> is the only report in the location specified by folder_path2.

Vedere ancheSee Also

Migrazione a OLTP in memoriaMigrating to In-Memory OLTP