Condividi tramite


Ottimizzazione dei filegroup per i database

La contesa di input/output dei file (I/O) è spesso un fattore di limitazione o un collo di bottiglia in un ambiente BizTalk Server di produzione. BizTalk Server è un'applicazione a elevato utilizzo di database e, a sua volta, il database di SQL Server usato da BizTalk Server è molto intensivo per l'I/O dei file. Questo argomento descrive come usare in modo ottimale i file e i filegroup di SQL Server per ridurre al minimo l'occorrenza di conflitti di I/O dei file e migliorare le prestazioni complessive di una soluzione BizTalk Server.

Informazioni generali

Ogni soluzione BizTalk Server incontrerà infine una contesa di I/O dei file man mano che il throughput viene aumentato. Il sottosistema di I/O o il motore di archiviazione è un componente chiave di qualsiasi database relazionale. Un'implementazione corretta del database richiede in genere un'attenta pianificazione nelle fasi iniziali di un progetto. Questa pianificazione deve includere la considerazione dei problemi seguenti:

  • Tipo di hardware del disco rigido da usare, ad esempio dispositivi RAID (array ridondanti di dischi indipendenti).

  • Come suddividere i dati sui dischi usando file e filegroup. Per altre informazioni sull'uso di file e filegroup in SQL Server, vedere File di database e filegroup.

  • Implementazione della progettazione ottimale dell'indice per migliorare le prestazioni durante l'accesso ai dati. Per altre informazioni sulla progettazione di indici, vedere Progettazione di indici.

  • Come impostare i parametri di configurazione di SQL Server per ottenere prestazioni ottimali. Per altre informazioni sull'impostazione di parametri di configurazione ottimali per SQL Server, vedere Opzioni di configurazione del server.

    Uno degli obiettivi principali della progettazione di BizTalk Server è garantire che un messaggio non venga mai perso. Per ridurre la possibilità di perdita di messaggi, i messaggi vengono spesso scritti nel database MessageBox durante l'elaborazione del messaggio. Quando i messaggi vengono elaborati da un'orchestrazione, il messaggio viene scritto nel database MessageBox in ogni punto di persistenza nell'orchestrazione. Questi punti di persistenza fanno sì che MessageBox scriva il messaggio e lo stato correlato sul disco fisico. Con velocità di trasferimento più alte, questa persistenza può comportare una considerevole contesa del disco e può potenzialmente diventare un collo di bottiglia.

    L'uso ottimale delle funzionalità file e filegroup in SQL Server è stato illustrato per risolvere in modo efficace i colli di bottiglia di I/O dei file e migliorare le prestazioni complessive nelle soluzioni BizTalk Server.

Annotazioni

Questa ottimizzazione deve essere eseguita solo da un amministratore esperto del database di SQL Server e solo dopo che è stato eseguito correttamente il backup di tutti i database BizTalk Server. Questa ottimizzazione deve essere eseguita in tutti i computer SQL Server nell'ambiente BizTalk Server.

I file e i filegroup di SQL Server possono essere usati per migliorare le prestazioni del database perché questa funzionalità consente di creare un database su più dischi, più controller disco o sistemi RAID (array ridondante di dischi indipendenti). Ad esempio, se il computer dispone di quattro dischi, è possibile creare un database costituito da tre file di dati e da un file di log, con un file su ogni disco. Quando si accede ai dati, quattro teste di lettura/scrittura possono accedere simultaneamente ai dati in parallelo. In questo modo le operazioni del database vengono velocizzate in modo significativo. Per altre informazioni sull'implementazione di soluzioni hardware per i dischi di SQL Server, vedere Prestazioni del database nella documentazione online di SQL Server.

Inoltre, i file e i filegroup consentono il posizionamento dei dati, perché le tabelle possono essere create in filegroup specifici. Ciò migliora le prestazioni, perché tutte le operazioni di I/O dei file per una determinata tabella possono essere indirizzate a un disco specifico. Ad esempio, una tabella usata di frequente può essere collocata in un file all'interno di un filegroup, che si trova su un disco, mentre le altre tabelle con accesso meno frequente nel database possono essere collocate su file diversi in un altro filegroup, situato su un secondo disco.

I colli di bottiglia nell'I/O dei file sono discussi in modo approfondito in Colli di bottiglia nel livello database. L'indicatore più comune che l'I/O dei file (I/O del disco) è un collo di bottiglia è il valore del contatore "Disco fisico: Lunghezza media della coda del disco". Quando il valore del contatore "Physical Disk:Average Disk Queue Length" è maggiore di circa 3 per qualsiasi disco su uno qualsiasi dei computer che eseguono SQL Server, è probabile che l'I/O dei file rappresenti un collo di bottiglia.

Se l'applicazione dell'ottimizzazione di file o filegroup non risolve un problema di strozzatura dell'I/O dei file, potrebbe essere necessario aumentare la larghezza di banda del sottosistema del disco aggiungendo altre unità fisiche o SAN.

In questo argomento viene descritto come applicare manualmente le ottimizzazioni di file e filegroup, ma queste ottimizzazioni possono anche essere scriptate. Uno script SQL di esempio è fornito nello Script SQL dei Gruppi di File del Database MessageBox di BizTalk Server.

Annotazioni

È importante notare che questo script deve essere modificato per contenere il file, il filegroup e la configurazione del disco usati dai database di SQL Server per una determinata soluzione BizTalk Server.

Database creati con una configurazione predefinita di BizTalk Server

A seconda delle funzionalità abilitate durante la configurazione di BizTalk Server, è possibile creare fino a 13 database diversi in SQL Server e tutti questi database vengono creati nel filegroup predefinito. Il filegroup predefinito per SQL Server è il filegroup PRIMARY, a meno che il filegroup predefinito non venga modificato usando il comando ALTER DATABASE. Nella tabella seguente sono elencati i database creati in SQL Server se tutte le funzionalità sono abilitate durante la configurazione di BizTalk Server.

Database di BizTalk Server

Banca dati Nome database predefinito Descrizione
Database di configurazione BizTalkMgmtDb Archivio meta-informazioni centrale per tutte le istanze di BizTalk Server nel gruppo BizTalk Server.
Database di MessageBox di BizTalk BizTalkMsgBoxDb Archivia i predicati delle sottoscrizioni. Si tratta di una piattaforma host che mantiene le code e le tabelle di stato per ogni host di BizTalk Server. Il database MessageBox archivia anche i messaggi e le proprietà del messaggio.
Database di rilevamento BizTalk BizTalkDTADb Archivia i dati aziendali e di monitoraggio dello stato di salute tracciati dal motore di tracciamento di BizTalk Server.
Database di analisi BAM Analisi BAM Database di SQL Server Analysis Services che mantiene i dati cronologici aggregati per le attività aziendali.
Database BAM dello schema a stella BAMStarSchema Trasforma i dati raccolti dal monitoraggio delle attività aziendali per l'elaborazione OLAP. Questo database è necessario quando si usa il database di analisi BAM.
Database di importazione primaria BAM BAMPrimaryImport Archivia gli eventi delle attività aziendali e quindi esegue query sullo stato di avanzamento e sui dati dopo le istanze delle attività. Questo database esegue anche aggregazioni in tempo reale.
Database di archiviazione BAM BAMArchive Memorizza i predicati dell'abbonamento. Il database di archiviazione BAM riduce al minimo l'accumulo dei dati delle attività aziendali nel database di importazione primaria BAM.
Database SSO SSODB Archivia in modo sicuro le informazioni di configurazione per le posizioni di ricezione. Archivia le informazioni per le applicazioni affiliate SSO, nonché le credenziali utente crittografate per tutte le applicazioni affiliate.
Database del motore di regole BizTalkRuleEngineDb Archivio per

- Politiche, ovvero set di regole correlate.
- Vocabolari, che sono raccolte di nomi descrittivi e specifici del dominio per i riferimenti ai dati nelle regole.
Database di amministrazione di Human Workflow Services BizTalkHwsDb Archivia le informazioni amministrative richieste da BizTalk Human Workflow Services.
Database di gestione dei partner commerciali Manutenzione Produttiva Totale Archivia i dati dei partner commerciali per Business Activity Services (BAS).
Database di amministrazione di Tracking Analysis Server BizTalkAnalysisDb Memorizza cubi OLAP sia aziendali che di monitoraggio della salute.

Separazione dei file di dati e dei file di log

Come indicato in precedenza, una configurazione predefinita di BizTalk Server inserisce il MessageBox Database in un singolo file nel filegroup predefinito. Per impostazione predefinita, i dati e i log delle transazioni per il database MessageBox vengono inseriti nella stessa unità e percorso. Questa operazione viene eseguita per supportare i sistemi con un singolo disco. Una singola configurazione file/filegroup/disco non è ottimale in un ambiente di produzione. Per ottenere prestazioni ottimali, i file di dati e i file di log devono essere posizionati su dischi separati.

Annotazioni

I file di log non fanno mai parte di un filegroup. Lo spazio dei log viene gestito separatamente dallo spazio dati.

Regola 80/20 per la distribuzione di database BizTalk Server

L'origine principale della contesa nella maggior parte delle soluzioni BizTalk Server, a causa di contese di I/O su disco o conflitti di database, è il database MessageBox di BizTalk Server. Questo vale sia negli scenari single che multi-MessageBox. È ragionevole presupporre che fino a 80% del valore di distribuzione dei database BizTalk deriva dall'ottimizzazione dei file di dati e del file di log messageBox. Lo scenario di esempio descritto di seguito è incentrato sull'ottimizzazione dei file di dati per un database MessageBox. Questi passaggi possono quindi essere seguiti per altri database in base alle esigenze. Ad esempio, se la soluzione richiede un rilevamento esteso, è anche possibile ottimizzare il database di rilevamento.

Aggiunta manuale di file al database MessageBox, procedura dettagliata

Questa sezione dell'argomento descrive i passaggi che è possibile seguire per aggiungere manualmente i file al database MessageBox. In questo esempio vengono aggiunti tre filegroup e quindi un file viene aggiunto a ogni filegroup per distribuire i file per MessageBox su più dischi.

Aggiungere manualmente i file nel database MessageBox su SQL Server

  1. Aprire SQL Server Management Studio per visualizzare la finestra di dialogo Connetti al server .

    Schermata di accesso di SQL Server

  2. Nella casella Di modifica Nome server della finestra di dialogo Connetti al server immettere il nome dell'istanza di SQL Server che ospita i database MessageBox di BizTalk Server e fare clic su Connetti per visualizzare SQL Server Management Studio. Nel riquadro Esplora oggetti di SQL Server Management Studio espandere Database per visualizzare i database per questa istanza di SQL Server.

    SQL Server 2005 Management Studio, Esplora oggetti

  3. Fare clic con il pulsante destro del mouse sul database a cui aggiungere i file, quindi scegliere Proprietà per visualizzare la finestra di dialogo Proprietà database per il database.

    Finestra di dialogo Proprietà database di SQL Server 2005

  4. Nella finestra di dialogo Proprietà database selezionare la pagina Filegroup. Per creare filegroup aggiuntivi per i database BizTalkMsgBoxDb, fare clic su Aggiungi . Nell'esempio seguente vengono aggiunti tre filegroup aggiuntivi.

    SQL Server 2005, aggiunta di gruppi di file a un database

  5. Nella finestra di dialogo Proprietà database selezionare la pagina File .

    Per creare altri file da aggiungere ai filegroup, fare clic su Aggiungi e quindi su OK. Il database MessageBox è ora distribuito tra più dischi, che offrirà un notevole vantaggio sulle prestazioni rispetto a una singola configurazione del disco.

    Nell'esempio seguente viene creato un file per ognuno dei filegroup creati in precedenza e ogni file viene inserito in un disco separato.

    SQL Server 2005, aggiunta di file a un filegroup

Script SQL di esempio per l'aggiunta di filegroup e file al database MessageBox BizTalk

Questa guida include uno script SQL per l'aggiunta di filegroup e file al database MessageBox di BizTalk Server.

Annotazioni

Poiché SQL Server scrive nei file di log in sequenza, non esiste alcun vantaggio in termini di prestazioni grazie alla creazione di più file di log per un database di SQL Server.

Per eseguire questo script, seguire questa procedura:

  1. Aprire SQL Server Management Studio per visualizzare la finestra di dialogo Connetti al server .

  2. Nella finestra di dialogo Modifica nome server della finestra di dialogo Connetti al server immettere il nome dell'istanza di SQL Server che ospita i database MessageBox di BizTalk Server e fare clic su Connetti per visualizzare la finestra di dialogo SQL Server Management Studio.

  3. In SQL Server Management Studio fare clic sul menu File , scegliere Nuovo e quindi fare clic su Query con connessione corrente per avviare l'editor di query SQL.

  4. Copiare lo script di esempio da BizTalk Server MessageBox Database Filegroups SQL Script nell'editor di query.

  5. Modificare i parametri nello script in modo che corrispondano all'ambiente BizTalk Server ed eseguire lo script.

    Il vantaggio della creazione di script è che gli script possono eseguire più attività rapidamente, possono essere riprodotti con precisione e ridurre la possibilità di errore umano. Lo svantaggio dello scripting è che l'esecuzione di uno script scritto in modo non corretto può causare problemi gravi che potrebbero richiedere la riconfigurazione dei database bizTalk Server da zero.

Importante

È fondamentale che gli script SQL, ad esempio lo script di esempio in questa guida, vengano testati accuratamente prima di essere eseguiti in un ambiente di produzione.

Vedere anche

Ottimizzazione delle prestazioni del database