Ottimizzare le prestazioni tramite le tecnologie in memoria nel database SQLOptimize performance by using In-Memory technologies in SQL Database

Le tecnologie in memoria del database SQL di Azure consentono di migliorare le prestazioni dell'applicazione e ridurre potenzialmente i costi del database.In-Memory technologies in Azure SQL Database enable you to improve performance of your application, and potentially reduce cost of your database.

Quando usare le tecnologie In memoriaWhen to use In-Memory technologies

Usando le tecnologie in memoria nel database SQL di Azure, è possibile ottenere miglioramenti delle prestazioni con diversi carichi di lavoro:By using In-Memory technologies in Azure SQL Database, you can achieve performance improvements with various workloads:

  • Transazionale (elaborazione transazionale online o OLTP), in cui la maggior parte delle richieste esegue la lettura o l'aggiornamento di set di dati più piccoli (ad esempio, le operazioni CRUD).Transactional (online transactional processing (OLTP)) where most of the requests read or update smaller set of data (for example, CRUD operations).
  • Analitico (elaborazione analitica online o OLAP), in cui la maggior parte delle query contiene calcoli complessi per la creazione di report, con un determinato numero di query che caricano e aggiungono dati nelle tabelle esistenti (il cosiddetto caricamento bulk) oppure eliminano dati dalle tabelle.Analytic (online analytical processing (OLAP)) where most of the queries have complex calculations for the reporting purposes, with a certain number of queries that load and append data to the existing tables (so called bulk-load), or delete the data from the tables.
  • Misto (elaborazione ibrida transazione/analitica o HTAP), in cui vengono eseguite query OLTP e OLAP sullo stesso set di dati.Mixed (hybrid transaction/analytical processing (HTAP)) where both OLTP and OLAP queries are executed on the same set of data.

Le tecnologie in memoria possono migliorare le prestazioni di questi carichi di lavoro mantenendo in memoria i dati che devono essere elaborati, tramite la compilazione nativa delle query o un'elaborazione avanzata come l'elaborazione batch e le istruzioni SIMD disponibili sull'hardware sottostante.In-memory technologies can improve performance of these workloads by keeping the data that should be processed into the memory, using native compilation of the queries, or advanced processing such as batch processing and SIMD instructions that are available on the underlying hardware.

PanoramicaOverview

Il database SQL di Azure dispone delle seguenti tecnologie in memoria:Azure SQL Database has the following In-Memory technologies:

  • OLTP in memoria aumenta il numero di transazioni al secondo e riduce la latenza per l'elaborazione delle transazioni.In-Memory OLTP increases number of transactions per second and reduces latency for transaction processing. Gli scenari che beneficiano dell'OLTP in memoria sono: elaborazione transazionale ad alta velocità di elaborazione, come l'inserimento di dati commerciali e da videogiochi, da eventi o dispositivi IoT, il caching, il caricamento di dati, le tabelle temporanee e gli scenari con variabili di tabella.Scenarios that benefit from In-Memory OLTP are: high-throughput transaction processing such as trading and gaming, data ingestion from events or IoT devices, caching, data load, and temporary table and table variable scenarios.
  • Gli indici columnstore cluster riducono fino a 10 volte il footprint della memoria e migliorano le prestazioni delle query di reporting e analisi.Clustered columnstore indexes reduce your storage footprint (up to 10 times) and improve performance for reporting and analytics queries. È possibile usare gli indici con tabelle dei fatti nei data mart per inserire più dati nel database e migliorare le prestazioni.You can use it with fact tables in your data marts to fit more data in your database and improve performance. Gli indici possono anche essere usati con i dati cronologici nel database operativo per archiviare ed essere in grado di eseguire una query su una quantità di dati 10 volte superiore.Also, you can use it with historical data in your operational database to archive and be able to query up to 10 times more data.
  • Gli indici columnstore non cluster per HTAP consentono di ottenere in tempo reale informazioni approfondite sull'azienda eseguendo una query direttamente sul database operativo, senza la necessità di eseguire un processo ETL dispendioso e attendere che il data warehouse venga popolato.Nonclustered columnstore indexes for HTAP help you to gain real-time insights into your business through querying the operational database directly, without the need to run an expensive extract, transform, and load (ETL) process and wait for the data warehouse to be populated. Gli indici columnstore non cluster consentono l'esecuzione rapida delle query di analisi nei database OLTP, riducendo l'impatto sul carico di lavoro operativo.Nonclustered columnstore indexes allow fast execution of analytics queries on the OLTP database, while reducing the impact on the operational workload.
  • Gli indici columnstore cluster ottimizzati per la memoria per HTAP consentono di elaborare le transazioni e al contempo di eseguire le query di analisi sugli stessi dati in tempi estremamente rapidi.Memory-optimized clustered columnstore indexes for HTAP enables you to perform fast transaction processing, and to concurrently run analytics queries very quickly on the same data.

Gli indici columnstore e OLTP in memoria fanno parte di SQL Server rispettivamente dal 2012 e dal 2014.Both columnstore indexes and In-Memory OLTP have been part of the SQL Server product since 2012 and 2014, respectively. Il database SQL di Azure e SQL Server condividono la stessa implementazione delle tecnologie in memoria.Azure SQL Database and SQL Server share the same implementation of In-Memory technologies. In futuro, le nuove funzionalità per queste tecnologie verranno integrate prima nel database SQL di Azure e poi in SQL Server.Going forward, new capabilities for these technologies are released in Azure SQL Database first, before they are released in SQL Server.

Vantaggi delle tecnologie in memoriaBenefits of In-memory technology

Grazie a una più efficiente elaborazione delle query e delle transazioni, le tecnologie in memoria aiutano a ridurre i costi.Because of the more efficient query and transaction processing, In-Memory technologies also help you to reduce cost. In genere non è necessario aggiornare il piano tariffario del database per migliorare le prestazioni.You typically don't need to upgrade the pricing tier of the database to achieve performance gains. In alcuni casi infatti le tecnologie in memoria consentono di ridurre il piano tariffario e di osservare al contempo miglioramenti delle prestazioni.In some cases, you might even be able reduce the pricing tier, while still seeing performance improvements with In-Memory technologies.

Di seguito sono riportati due esempi che mostrano come la tecnologia OLTP in memoria abbia contribuito a migliorare significativamente le prestazioni.Here are two examples of how In-Memory OLTP helped to significantly improve performance:

Nota

Le tecnologie in memoria sono disponibili nei database SQL di Azure di livello Premium e Business Critical e nei pool elastici Premium.In-Memory technologies are available in Premium and Business Critical tier Azure SQL databases and Premium elastic pools.

Il video seguente spiega il potenziale miglioramento delle prestazioni con le tecnologie in memoria nel database SQL di Azure.The following video explains potential performance gains with In-Memory technologies in Azure SQL Database. Tenere presente che il miglioramento delle prestazioni dipende sempre da numerosi fattori, tra cui la natura del carico di lavoro e dei dati, il modello di accesso del database e così via.Remember that the performance gain that you see always depends on many factors, including the nature of the workload and data, access pattern of the database, and so on.

Questo articolo descrive gli aspetti di OLTP in memoria e degli indici columnstore specifici del database SQL di Azure e include alcuni esempi:This article describes aspects of In-Memory OLTP and columnstore indexes that are specific to Azure SQL Database and also includes samples:

  • Viene analizzato l'impatto di queste tecnologie sulla memoria e i limiti sulle dimensioni dei dati.You'll see the impact of these technologies on storage and data size limits.
  • Verrà illustrato come gestire lo spostamento dei database che sfruttano queste tecnologie tra i diversi piani tariffari.You'll see how to manage the movement of databases that use these technologies between the different pricing tiers.
  • Verranno esaminati due esempi che illustrano l'uso di OLTP in memoria e degli indici columnstore nel database SQL di Azure.You'll see two samples that illustrate the use of In-Memory OLTP, as well as columnstore indexes in Azure SQL Database.

Per altre informazioni, vedere:For more information, see:

OLTP in memoriaIn-memory OLTP

La tecnologia OLTP in memoria fornisce operazioni di accesso ai dati estremamente veloci, mantenendo tutti i dati in memoria.In-memory OLTP technology provides extremely fast data access operations by keeping all data in memory. Usa inoltre indici specializzati, la compilazione nativa delle query e un accesso ai dati privo di latch per migliorare le prestazioni del carico di lavoro OLTP.It also uses specialized indexes, native compilation of queries, and latch-free data-access to improve performance of the OLTP workload. Esistono due modi per organizzare i dati OLTP in memoria:There are two ways to organize your In-Memory OLTP data:

  • Il formato rowstore ottimizzato per la memoria, in cui ogni riga è un oggetto di memoria distinto.Memory-optimized rowstore format where every row is a separate memory object. Questo è un classico formato OLTP in memoria ottimizzato per carichi di lavoro OLTP ad alte prestazioni.This is a classic In-Memory OLTP format optimized for high-performance OLTP workloads. Esistono due tipi di tabelle ottimizzate per la memoria che possono essere usate nel formato rowstore ottimizzato per la memoria:There are two types of memory-optimized tables that can be used in the memory-optimized rowstore format:
    • Le tabelle durevoli (SCHEMA_AND_DATA), in cui le righe inserite nella memoria vengono mantenute dopo il riavvio del server.Durable tables (SCHEMA_AND_DATA) where the rows placed in memory are preserved after server restart. Questo tipo di tabelle si comporta come una tabella rowstore tradizionale con i vantaggi aggiuntivi delle ottimizzazioni in memoria.This type of tables behaves like a traditional rowstore table with the additional benefits of in-memory optimizations.
    • Tabelle non durevoli (SCHEMA_ONLY) in cui le righe vengono mantenute non dopo il riavvio.Non-durable tables (SCHEMA_ONLY) where the rows are not-preserved after restart. Questo tipo di tabella è progettato per i dati temporanei (ad esempio, la sostituzione di tabelle temporanee) o per le tabelle in cui è necessario caricare rapidamente i dati prima di spostarli in una tabella persistente (le cosiddette tabelle di staging).This type of table is designed for temporary data (for example, replacement of temp tables), or tables where you need to quickly load data before you move it to some persisted table (so called staging tables).
  • Il formato columnstore ottimizzato per la memoria, in cui dati sono organizzati in un formato a colonne.Memory-optimized columnstore format where data is organized in a columnar format. Questa struttura è progettata per gli scenari HTAP in cui è necessario eseguire query di analisi sulla stessa struttura dei dati in cui è in esecuzione il carico di lavoro OLTP.This structure is designed for HTAP scenarios where you need to run analytic queries on the same data structure where your OLTP workload is running.

Nota

La tecnologia OLTP in memoria è progettata per le strutture dei dati che possono risiedere completamente in memoria.In-Memory OLTP technology is designed for the data structures that can fully reside in memory. Poiché non è possibile eseguire l'offload su disco dei dati in memoria, assicurarsi di usare un database che disponga di memoria sufficiente.Since the In-memory data cannot be offloaded to disk, make sure that you are using database that has enough memory. Per altre informazioni, vedere Limite su dimensioni dei dati e archiviazione per OLTP in memoria.See Data size and storage cap for In-Memory OLTP for more details.

Per le nozioni di base su OLTP in memoria: Avvio rapido 1: Tecnologie OLTP in memoria per ottimizzare le prestazioni di T-SQLA quick primer on In-Memory OLTP: Quickstart 1: In-Memory OLTP Technologies for Faster T-SQL Performance (another article to help you get started)

Video di approfondimento sulle tecnologie:In-depth videos about the technologies:

Esiste un modo a livello di codice per capire se un determinato database supporta OLTP in memoria.There is a programmatic way to understand whether a given database supports In-Memory OLTP. È possibile eseguire la query Transact-SQL seguente:You can execute the following Transact-SQL query:

SELECT DatabasePropertyEx(DB_NAME(), 'IsXTPSupported');

Se la query restituisce 1, OLTP in memoria è supportato nel database.If the query returns 1, In-Memory OLTP is supported in this database. Le query seguenti identificano tutti gli oggetti che devono essere rimossi prima eseguire il downgrade di un database al piano Standard o Basic:The following queries identify all objects that need to be removed before a database can be downgraded to Standard/Basic:

SELECT * FROM sys.tables WHERE is_memory_optimized=1
SELECT * FROM sys.table_types WHERE is_memory_optimized=1
SELECT * FROM sys.sql_modules WHERE uses_native_compilation=1

Limite su dimensioni dei dati e archiviazione per OLTP in memoriaData size and storage cap for In-Memory OLTP

OLTP in memoria include tabelle ottimizzate per la memoria che vengono usate per archiviare i dati utente.In-Memory OLTP includes memory-optimized tables, which are used for storing user data. Queste tabelle devono rientrare nella memoria.These tables are required to fit in memory. Poiché la memoria è gestita direttamente nel servizio del database SQL, esiste il concetto di quota per i dati utente.Because you manage memory directly in the SQL Database service, we have the concept of a quota for user data. Questo concetto è definito archiviazione di OLTP in memoria.This idea is referred to as In-Memory OLTP storage.

Ogni piano tariffario relativo a database singoli e pool elastici supportati include una certa quantità di spazio di archiviazione OLTP in memoria.Each supported single database pricing tier and each elastic pool pricing tier includes a certain amount of In-Memory OLTP storage. Vedere Limiti delle risorse basate su DTU - database singolo, Limiti delle risorse basate su DTU - pool elastici,Limiti delle risorse basate su vCore - database singoli e Limiti delle risorse basate su vCore - pool elastici.See DTU-based resource limits - single database, DTU-based resource limits - elastic pools,vCore-based resource limits - single databases and vCore-based resource limits - elastic pools.

Gli elementi seguenti rientrano nel limite di archiviazione di OLTP in memoria:The following items count toward your In-Memory OLTP storage cap:

  • Righe di dati utente attive nelle tabelle ottimizzate per la memoria e variabili di tabella.Active user data rows in memory-optimized tables and table variables. Si noti che le versioni precedenti della riga non vengono conteggiate nel limite.Note that old row versions don't count toward the cap.
  • Indici nelle tabelle ottimizzate per la memoria.Indexes on memory-optimized tables.
  • Costi operativi delle operazioni ALTER TABLE.Operational overhead of ALTER TABLE operations.

Se si raggiunge il limite, si riceve un errore di superamento della quota e non sarà più possibile inserire o aggiornare dati.If you hit the cap, you receive an out-of-quota error, and you are no longer able to insert or update data. Per risolvere il problema, eliminare i dati o aumentare il piano tariffario del database o del pool.To mitigate this error, delete data or increase the pricing tier of the database or pool.

Per dettagli sul monitoraggio dell'uso dello spazio di archiviazione OLTP in memoria e sulla configurazione degli avvisi al raggiungimento del limite, vedere Monitorare l'archiviazione in memoria.For details about monitoring In-Memory OLTP storage utilization and configuring alerts when you almost hit the cap, see Monitor In-Memory storage.

Informazioni sui pool elasticiAbout elastic pools

Con i pool elastici, lo spazio di archiviazione OLTP in memoria è condiviso tra tutti i database nel pool.With elastic pools, the In-Memory OLTP storage is shared across all databases in the pool. Ne consegue che l'utilizzo in un database può potenzialmente influire sugli altri database.Therefore, the usage in one database can potentially affect other databases. Esistono due metodi per la risoluzione di questo problema:Two mitigations for this are:

  • Configurare per i database un valore Max-eDTU o MaxvCore inferiore al numero di eDTU o vCore configurati per l'intero pool.Configure a Max-eDTU or MaxvCore for databases that is lower than the eDTU or vCore count for the pool as a whole. Ciò limita l'uso dello spazio di archiviazione OLTP in memoria in qualsiasi database del pool alla dimensione corrispondente al numero di eDTU.This maximum caps the In-Memory OLTP storage utilization, in any database in the pool, to the size that corresponds to the eDTU count.
  • Configurare Min-eDTU o MinvCore su un valore maggiore di 0.Configure a Min-eDTU or MinvCore that is greater than 0. In questo modo si garantisce che ogni database nel pool abbia a disposizione la quantità di spazio di archiviazione OLTP in memoria corrispondente al valore Min-eDTU o vCore configurato.This minimum guarantees that each database in the pool has the amount of available In-Memory OLTP storage that corresponds to the configured Min-eDTU or vCore.

Modifica dei livelli di servizio dei database che usano le tecnologie OLTP in memoriaChanging service tiers of databases that use In-Memory OLTP technologies

È sempre possibile aggiornare il database o l'istanza a un piano superiore, ad esempio da Utilizzo generico a Business Critical (o da Standard a Premium).You can always upgrade your database or instance to a higher tier, such as from General Purpose to Business Critical (or Standard to Premium). Il passaggio implica semplicemente un aumento di funzionalità e risorse.The available functionality and resources only increase.

Tuttavia, eseguire il downgrade del piano può avere un impatto negativo sul database.But downgrading the tier can negatively impact your database. Questo impatto è particolarmente evidente quando si effettua il downgrade da Business Critical a Utilizzo generico (o da Premium a Standard o Basic) nei casi in cui il database contenga oggetti OLTP in memoria.The impact is especially apparent when you downgrade from Business Critical to General Purpose (or Premium to Standard or Basic) when your database contains In-Memory OLTP objects. Le tabelle ottimizzate per la memoria non sono disponibili dopo il downgrade, anche se dovessero rimanere visibili.Memory-optimized tables are unavailable after the downgrade (even if they remain visible). Le stesse considerazioni si applicano quando si effettua il downgrade del piano tariffario di un pool elastico o quando si esegue lo spostamento dei database con tecnologie in memoria in un pool elastico Standard o Basic.The same considerations apply when you're lowering the pricing tier of an elastic pool, or moving a database with In-Memory technologies, into a Standard or Basic elastic pool.

Importante

OLTP in memoria non è supportato nel piano Utilizzo generico, Standard o Basic.In-Memory OLTP isn't supported in the General Purpose, Standard or Basic tier. Non è pertanto possibile spostare un database che contiene oggetti OLTP in memoria al piano tariffario Standard o Basic.Therefore, it isn't possible to move a database that has any In-Memory OLTP objects to the Standard or Basic tier.

Prima di eseguire il downgrade del database al livello Standard o Basic, rimuovere tutti i tipi di tabella e le tabelle ottimizzate per la memoria, nonché tutti i moduli T-SQL compilati in modo nativo.Before you downgrade the database to Standard/Basic, remove all memory-optimized tables and table types, as well as all natively compiled T-SQL modules.

Riduzione delle risorse nel piano Business Critical: i dati nelle tabelle ottimizzate per la memoria devono essere contenuti nell'archiviazione OLTP in memoria associata al piano del database o dell'istanza gestita o disponibile nel pool elastico.Scaling-down resources in Business Critical tier: Data in memory-optimized tables must fit within the In-Memory OLTP storage that is associated with the tier of the database or Managed Instance, or it is available in the elastic pool. Se si tenta di ridurre il piano tariffario o di spostare il database in un pool che non dispone di sufficiente spazio di archiviazione OLTP in memoria, l'operazione avrà esito negativo.If you try to scale-down the tier or move the database into a pool that doesn't have enough available In-Memory OLTP storage, the operation fails.

Columnstore in memoriaIn-memory columnstore

La tecnologia columnstore in memoria consente di archiviare ed eseguire query su una grande quantità di dati nelle tabelle.In-memory columnstore technology is enabling you to store and query a large amount of data in the tables. La tecnologia columnstore usa un formato di archiviazione dei dati basato su colonne e l'elaborazione batch delle query allo scopo di ottenere prestazioni delle query fino a 10 volte superiori nei carichi di lavoro OLAP rispetto all'archiviazione tradizionale orientata alle righe.Columnstore technology uses column-based data storage format and batch query processing to achieve gain up to 10 times the query performance in OLAP workloads over traditional row-oriented storage. È anche possibile migliorare fino a 10 volte la compressione dei dati rispetto alla dimensione dei dati non compressi.You can also achieve gains up to 10 times the data compression over the uncompressed data size. Esistono due tipi di modelli di columnstore che è possibile usare per organizzare i dati:There are two types of columnstore models that you can use to organize your data:

  • Columnstore cluster, in cui tutti i dati nella tabella sono organizzati in un formato a colonne.Clustered columnstore where all data in the table is organized in the columnar format. In questo modello, tutte le righe nella tabella vengono inserite in formato a colonne, che esegue la compressione dei dati e consente di eseguire rapidamente query analitiche e report sulla tabella.In this model, all rows in the table are placed in columnar format that highly compresses the data and enables you to execute fast analytical queries and reports on the table. A seconda della natura dei dati, è possibile ottenere una riduzione delle dimensioni da 10 a 100 volte.Depending on the nature of your data, the size of your data might be decreased 10x-100x. Il modello con columnstore cluster consente inoltre l'inserimento rapido di grandi quantità di dati (caricamento bulk), perché i batch di dati di grandi dimensioni con più di 100.000 righe vengono compressi prima di essere archiviati su disco.Clustered columnstore model also enables fast ingestion of large amount of data (bulk-load) since large batches of data greater than 100K rows are compressed before they are stored on disk. Questo modello è una scelta appropriata per i classici scenari di data warehouse.This model is a good choice for the classic data warehouse scenarios.
  • Columnstore non cluster, in cui i dati vengono archiviati in una tabella rowstore tradizionale ed è presente un indice in formato columnstore usato per le query di analisi.Non-clustered columnstore where the data is stored in traditional rowstore table and there is an index in the columnstore format that is used for the analytical queries. Questo modello consente l'elaborazione analitica e transazionale ibrida (HTAP), che offre la possibilità di eseguire analisi in tempo reale ad alte prestazioni su carichi di lavoro transazionali.This model enables Hybrid Transactional-Analytic Processing (HTAP): the ability to run performant real-time analytics on a transactional workload. Le query OLTP vengono eseguite sulla tabella rowstore ottimizzata per l'accesso a un set di righe limitato, mentre le query OLAP vengono eseguite sull'indice columnstore, che rappresenta la scelta migliore per le analisi.OLTP queries are executed on rowstore table that is optimized for accessing a small set of rows, while OLAP queries are executed on columnstore index that is better choice for scans and analytics. Query Optimizer nel database SQL di Azure sceglie in modo dinamico il formato rowstore o columnstore in base alla query.Azure SQL Database Query optimizer dynamically chooses rowstore or columnstore format based on the query. Gli indici columnstore non cluster non riducono le dimensioni dei dati, poiché il set di dati originale viene mantenuto nella tabella rowstore originale senza apportare modifiche.Non-clustered columnstore indexes don't decrease the size of the data since original data-set is kept in the original rowstore table without any change. Tuttavia, le dimensioni dell'indice columnstore aggiuntivo dovrebbero essere significativamente inferiori rispetto all'indice ad albero B equivalente.However, the size of additional columnstore index should be in order of magnitude smaller than the equivalent B-tree index.

Nota

La tecnologia columnstore in memoria mantiene in memoria solo i dati necessari per l'elaborazione, mentre i dati che non possono essere contenuti nella memoria sono archiviati su disco.In-memory columnstore technology keeps only the data that is needed for processing in the memory, while the data that cannot fit into the memory is stored on-disk. Pertanto, la quantità di dati nelle strutture con columnstore in memoria può superare la quantità di memoria disponibile.Therefore, the amount of data in In-memory columnstore structures can exceed the amount of available memory.

Video di approfondimento sulla tecnologia:In-depth video about the technology:

Dimensioni dei dati e archiviazione per gli indici columnstoreData size and storage for columnstore indexes

Gli indici columnstore non devono essere contenuti nella memoria.Columnstore indexes aren't required to fit in memory. L'unico limite alla dimensione degli indici è quindi la dimensione complessiva massima del database, descritta negli articoli Modello di acquisto basato su DTU e Modello di acquisto basato su vCore.Therefore, the only cap on the size of the indexes is the maximum overall database size, which is documented in the DTU-based purchasing model and vCore-based purchasing model articles.

Quando si usano gli indici columnstore cluster, viene impiegata la compressione a colonne per l'archiviazione delle tabelle di base.When you use clustered columnstore indexes, columnar compression is used for the base table storage. Ciò può ridurre notevolmente il footprint di archiviazione dei dati utente, ovvero è possibile inserire più dati nel database.This compression can significantly reduce the storage footprint of your user data, which means that you can fit more data in the database. Usando la compressione a colonne dell'archivio, è possibile inserire una quantità ancora maggiore di dati.And the compression can be further increased with columnar archival compression. La quantità di compressione che è possibile ottenere dipende dalla natura dei dati, ma generalmente si aggira intorno a 10 volte (10X) la compressione tradizionale.The amount of compression that you can achieve depends on the nature of the data, but 10 times the compression is not uncommon.

Ad esempio, se si dispone di un database con dimensioni massime di 1 terabyte (TB) e si raggiunge una compressione 10X tramite columnstore, nel database è possibile inserire un totale di 10 TB di dati utente.For example, if you have a database with a maximum size of 1 terabyte (TB) and you achieve 10 times the compression by using columnstore indexes, you can fit a total of 10 TB of user data in the database.

Quando si usano indici columnstore non cluster, la tabella di base è ancora archiviata nel formato rowstore tradizionale.When you use nonclustered columnstore indexes, the base table is still stored in the traditional rowstore format. Pertanto, il risparmio di archiviazione non è paragonabile a quello ottenuto con gli indici columnstore cluster.Therefore, the storage savings aren't as big as with clustered columnstore indexes. Tuttavia, se si sostituisce un numero di indici non in cluster tradizionali con un indice columnstore singolo, è sempre possibile riscontrare un risparmio complessivo nel footprint della memoria per la tabella.However, if you're replacing a number of traditional nonclustered indexes with a single columnstore index, you can still see an overall savings in the storage footprint for the table.

Modifica dei livelli di servizio dei database che contengono indici columnstoreChanging service tiers of databases containing Columnstore indexes

Il downgrade di un database singolo a Basic o Standard potrebbe non essere possibile se il database di destinazione è inferiore a S3.Downgrading single database to Basic or Standard might not be possible if your target tier is below S3. Gli indici columnstore sono supportati solo nel piano tariffario Business Critical/Premium e non nel piano Standard, S3 e superiore, né nel piano Basic.Columnstore indexes are supported only on the Business Critical/Premium pricing tier and on the Standard tier, S3 and above, and not on the Basic tier. Quando si effettua il downgrade del database a un piano o un livello non supportato, l'indice columnstore non è più disponibile.When you downgrade your database to an unsupported tier or level, your columnstore index becomes unavailable. Il sistema conserva l'indice columnstore, ma non lo usa mai.The system maintains your columnstore index, but it never leverages the index. Se in seguito si torna a un piano o un livello supportato, l'indice columnstore torna subito disponibile all'uso.If you later upgrade back to a supported tier or level, your columnstore index is immediately ready to be leveraged again.

Se dispone di un indice columnstore cluster, l'intera tabella non sarà più disponibile dopo il downgrade.If you have a clustered columnstore index, the whole table becomes unavailable after the downgrade. Pertanto è consigliabile eliminare tutti gli indici columnstore cluster prima di effettuare il downgrade del database a un piano o un livello non supportato.Therefore we recommend that you drop all clustered columnstore indexes before you downgrade your database to an unsupported tier or level.

Nota

Istanza gestita supporta gli indici columnstore in tutti i piani.Managed Instance supports ColumnStore indexes in all tiers.

Passaggi successiviNext steps

Risorse aggiuntiveAdditional resources

ApprofondimentiDeeper information

Progettazione di applicazioniApplication design

StrumentiTools