Progettazione di partizioni per migliorare le prestazioni di esecuzione delle query
Il partizionamento di una tabella o di un indice può migliorare le prestazioni di esecuzione delle query, a seconda dei tipi di query eseguite con maggiore frequenza e della configurazione hardware.
Partizionamento per query JOIN
Se si eseguono spesso query che comportano un equijoin tra due o più tabelle partizionate, è consigliabile che le relative colonne di partizionamento coincidano con le colonne in cui vengono unite le tabelle. È inoltre consigliabile collocare le tabelle o i relativi indici. Ciò significa che verrà utilizzata la stessa funzione di partizione denominata oppure funzioni diverse ma essenzialmente identiche, in quanto:
Hanno lo stesso numero di parametri utilizzati per il partizionamento e i parametri corrispondenti hanno gli stessi tipi di dati.
Definiscono lo stesso numero di partizioni.
Definiscono gli stessi valori limite per le partizioni.
In questo modo, SQL Server Query Optimizer può elaborare più rapidamente il join, in quanto è possibile unire in join le partizioni stesse. Se una query unisce in join due tabelle che non sono collocate o partizionate nel campo di join, la presenza delle partizioni potrebbe in realtà rallentare l'elaborazione delle query anziché accelerarla.
Vantaggi dell'utilizzo di più unità disco
In alcuni casi può sembrare vantaggioso eseguire il mapping tra le partizioni e i filegroup, in modo che ognuno acceda a un'unità disco fisica diversa, per migliorare le prestazioni delle operazioni di I/O. Quando in SQL Server viene eseguito l'ordinamento dei dati per le operazioni di I/O, i dati vengono innanzitutto ordinati in base alla partizione. In questo scenario, SQL Server accede a un'unità per volta. Questo comportamento può ridurre le prestazioni. Una soluzione migliore in termini di prestazioni consiste nell'eseguire lo striping dei file di dati delle partizioni tra più dischi configurando un sistema RAID. In questo modo, benché tramite SQL Server i dati vengano comunque ordinati in base alla partizione, è possibile accedere a tutte le unità di ogni partizione simultaneamente. Questa configurazione può essere progettata indipendentemente dal fatto che tutte le partizioni siano incluse in uno o più filegroup. Per ulteriori informazioni sull'utilizzo di livelli RAID diversi in SQL Server, vedere Livelli RAID e SQL Server.
Controllo del funzionamento dell' escalation blocchi.
Suddividendo le tabelle si può migliorare la prestazione abilitando l'escalation blocchi ad per una singola partizione anziché una tabella intera. Per ridurre la contesa tra blocchi consentene mediante l'escalation alla partizione, utilizzare l'opzione LOCK_ESCALATION dell'istruzione ALTER TABLE.