Condividi tramite


Riduzione delle prestazioni causata da errori di dimensioni del settore I/O non allineati in SQL Server

Si applica a: SQL Server

Questo articolo illustra come risolvere la riduzione delle prestazioni a causa di operazioni di I/O non allineate in SQL Server quando le dimensioni del settore fisico differiscono tra le unità disco.

Panoramica

SQL Server può riscontrare operazioni di I/O non allineate quando le dimensioni fisiche del settore delle unità disco differiscono tra server o sistemi di archiviazione. Questa condizione può ridurre le prestazioni ed è particolarmente comune negli ambienti in cui le dimensioni del settore non corrispondono, ad esempio:

  • Macchine virtuali con archiviazione collegata
  • Gruppi di disponibilità Always On
  • Log shipping
  • Migrazioni hardware

Ad esempio, si verifica un problema comune quando il server primario usa dimensioni di settore da 4 KB mentre il server secondario usa 512 byte. Questo problema causa operazioni di I/O non allineate durante i processi di sincronizzazione o ripristino dei log. Questo errore di allineamento può comportare una riduzione delle prestazioni, ad esempio i ripristini lenti o i ritardi di sincronizzazione.

Il flag di traccia 1800 garantisce che SQL Server usi dimensioni di settore coerenti di 4 KB per le operazioni di I/O del log delle transazioni, indipendentemente dalle dimensioni del settore fisico del disco sottostante. Questo flag di traccia è progettato per mantenere le prestazioni in ambienti misti in cui i server potrebbero essere stati aggiornati o migrati all'hardware con specifiche di archiviazione diverse.

Per i database con carichi di lavoro a elevato utilizzo di scrittura, l'allineamento delle operazioni di I/O può migliorare significativamente le prestazioni, mentre i vantaggi potrebbero essere trascurabili in ambienti con utilizzo intensivo di lettura.

Sintomi

È possibile che si verifichi una riduzione delle prestazioni in SQL Server a causa di operazioni di I/O non allineate se si verifica uno dei sintomi seguenti:

  • Tempi di sincronizzazione o ripristino lenti: le operazioni di I/O non allineate possono comportare tempi di sincronizzazione o ripristino lenti, in particolare in ambienti SQL Server distribuiti, ad esempio gruppi di disponibilità AlwaysOn o log shipping.

  • Messaggi di errore nel log degli errori di SQL Server: i messaggi di errore correlati alle operazioni di I/O possono indicare problemi di allineamento non corretto, ad esempio:

    There have been # misaligned log IOs which required falling back to synchronous IO.

  • Colli di bottiglia delle prestazioni durante operazioni a elevato utilizzo di scrittura: operazioni a elevato utilizzo di scrittura, ad esempio backup del log o ripristini di database, potrebbero riscontrare una latenza elevata del disco e un aumento dei tempi di attesa di I/O dovuti a operazioni di I/O non allineate, causando colli di bottiglia delle prestazioni e tempi di risposta lenti.

Verificare le dimensioni del settore

Per evitare operazioni di I/O non allineate, è importante assicurarsi che le dimensioni fisiche delle unità disco siano coerenti in tutti i server e i sistemi di archiviazione.

È possibile verificare le dimensioni del settore eseguendo il comando seguente in un prompt dei comandi con privilegi elevati:

fsutil fsinfo sectorinfo <volume path name>

Lo screenshot seguente mostra l'output del fsutil fsinfo sectorinfo comando per l'unità E: , con dimensioni del settore pari a 8 KB, ma dimensioni del settore fisico pari a 4 KB, causando operazioni di I/O non allineate:

Screenshot dell'output del prompt dei comandi delle dimensioni del settore da 8 KB.

Risoluzione

Se si verifica una riduzione delle prestazioni a causa di operazioni di I/O non allineate e non è possibile modificare le dimensioni del settore, è possibile usare il flag di traccia 1800 come parametro di avvio globale per forzare SQL Server a usare dimensioni di settore coerenti di 4 KB per le operazioni di I/O del log delle transazioni.

Per abilitare il flag di traccia 1800 come parametro di avvio, seguire questa procedura:

  1. Nel sistema in cui è installato SQL Server aprire Gestione configurazione SQL Server.

  2. Espandere Gestione configurazione SQL Server (locale) e selezionare Servizi SQL Server.

  3. Fare clic con il pulsante destro del mouse sull'istanza di SQL Server che si vuole configurare e selezionare Proprietà:

    Screenshot del menu di scelta rapida del servizio SQL Server con le proprietà evidenziate.

  4. In Proprietà di SQL Server selezionare la scheda Parametri di avvio, immettere -T1800 nel campo Specifica un parametro di avvio e selezionare Aggiungi per aggiungere il parametro all'elenco.

    Screenshot dell'aggiunta del flag di traccia come parametro di avvio nelle proprietà di SQL Server.

  5. Verificare che il flag di traccia sia stato aggiunto all'elenco dei parametri di avvio. Selezionare OK per salvare le modifiche:

    Screenshot della finestra delle proprietà di SQL Server con i parametri di avvio evidenziati.

  6. Riavviare il servizio SQL Server per abilitare il flag di traccia all'avvio dell'istanza.

Riferimenti

KB3009974 - CORREZIONE: Sincronizzazione lenta quando i dischi hanno dimensioni del settore diverse