Share via


Linee guida per la pianificazione di tabelle e indici partizionati

Prima di partizionare una tabella o un indice, pianificare la creazione degli oggetti di database seguenti:

  • Funzione di partizione

  • Schema di partizione

Una funzione di partizione definisce la modalità con cui viene eseguito il mapping tra le righe di una tabella o di un indice e un set di partizioni in base ai valori di colonne specifiche, definite colonne di partizionamento.

Uno schema di partizione consente di eseguire il mapping tra ogni partizione specificata dalla funzione di partizione e un filegroup.

Pianificazione della funzione di partizione

Quando si pianifica una funzione di partizione, considerare due fattori: la colonna i cui valori determinano la modalità di partizionamento di una tabella, nota come colonna di partizionamento, e l'intervallo di valori della colonna di partizionamento per ogni partizione. Questo intervallo di valori determina il numero di partizioni che costituiscono la tabella. In una tabella possono essere presenti al massimo 1000 partizioni.

Le opzioni disponibili per la colonna di partizionamento e per l'intervallo di valori sono determinate principalmente dalla possibilità di raggruppare i dati in modo logico, ad esempio per data, e dal fatto che tale raggruppamento logico sia più o meno adeguato per la gestione dei subset di dati.

Nello scenario di partizionamento del database di esempio AdventureWorks2008R2, le tabelle TransactionHistory e TransactionHistoryArchive sono ad esempio partizionate nel campo TransactionDate. L'intervallo di valori per ogni partizione corrisponde a un mese. Nella tabella TransactionHistory vengono mantenute le transazioni più recenti dell'anno, mentre nella tabella TransactionHistoryArchive vengono mantenute le transazioni meno recenti. Eseguendo la partizione della tabella in questo modo, è possibile trasferire in modo rapido ed efficiente i dati di un intero mese dalla tabella TransactionHistory a TransactionHistoryArchive a intervalli mensili.

Per ulteriori informazioni su questo scenario specifico, vedere Progettazione di partizioni per la gestione di subset di dati.

Qualsiasi colonna il cui tipo di dati possa essere utilizzato come chiave di indice può anche essere utilizzata come colonna di partizionamento, ad esclusione del tipo di dati timestamp, dei tipi di dati CLR (Common Language Runtime) Microsoft .NET Framework definiti dall'utente e dei tipi di dati alias. Per ulteriori informazioni, vedere Creazione di tabelle e di indici partizionati.

Pianificazione dello schema di partizione

Quando si pianifica lo schema di partizione, è necessario stabilire in quale o in quali filegroup si desidera posizionare le partizioni. Il principale motivo per cui inserire le partizioni in filegroup separati consiste nel fatto che in tal modo è possibile eseguire operazioni di backup nelle partizioni in modo indipendente, in quanto è possibile eseguire backup in filegroup singoli. Per ulteriori informazioni, vedere Backup e ripristino di database in SQL Server.

Nota importanteImportante

SQL Server non garantisce il completamento delle query con accesso a una tabella partizionata se i file che appartengono a uno o più filegroup della tabella non sono in uno stato ONLINE, indipendentemente dalle partizioni a cui la query accede.

Per gli script Transact-SQL che implementano questo scenario, vedere gli esempi ReadMe_SlidingWindow e Readme_PartitioningScript. Per informazioni sugli esempi, vedere Considerazioni per l'installazione di esempi e di database di esempio di SQL Server.