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 di produzione BizTalk Server. BizTalk Server è un'applicazione molto intensivo del database e, a sua volta, il database SQL Server usato da BizTalk Server è molto intensivo di I/O file. Questo argomento descrive come usare in modo ottimale i file e le funzionalità dei filegroup di SQL Server per ridurre al minimo l'occorrenza della contesa di I/O dei file e migliorare le prestazioni complessive di una soluzione BizTalk Server.

Panoramica

Ogni soluzione di BizTalk Server si verifica alla fine della contesa di I/O del file in quanto la velocità effettiva è aumentata. Il sottosistema I/O o il motore di archiviazione è un componente chiave di qualsiasi database relazionale. Per la corretta implementazione di un database è in genere necessaria una pianificazione accurata nelle fasi iniziali del progetto. Nella pianificazione è necessario prendere in considerazione gli aspetti seguenti:

  • Scelta del tipo di dischi da utilizzare, ad esempio dispositivi RAID (Redundant Array of Independent Disks).

  • Come suddividere i dati nei 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 SQL Server per prestazioni ottimali. Per altre informazioni sull'impostazione dei 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 attenuare 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 causano che MessageBox scrive il messaggio e lo stato correlato al disco fisico. A velocità effettiva superiori, questa persistenza può causare una notevole contesa del disco e può potenzialmente diventare un collo di bottiglia.

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

Nota

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

SQL Server file e filegroup possono essere usati per migliorare le prestazioni del database perché questa funzionalità consente di creare un database tra più dischi, più controller disco o RAID (matrice ridondante di dischi indipendenti) sistemi. Se, ad esempio, nel computer sono disponibili quattro dischi, è possibile creare un database che include tre file di dati e 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. Ciò consente di velocizzare significativamente le operazioni del database. Per altre informazioni sull'implementazione di soluzioni hardware per i dischi 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. Questo migliora le prestazioni, perché tutti i file I/O per una determinata tabella possono essere indirizzati a un disco specifico. Ad esempio, una tabella molto usata può essere posizionata su un filegroup, che si trova su un disco e l'altra tabelle meno accessibili nel database può essere situata su file diversi in un altro filegroup, che si trova su un secondo disco.

I colli di bottiglia di I/O dei file sono illustrati in dettaglio considerevole nei colli di bottiglia nel livello di database. L'indicatore più comune che il file I/O (I/O del disco) è un collo di bottiglia è il valore del contatore "Physical Disk:Average Disk Queue Length". Quando il valore del contatore "Physical Disk:Average Disk Queue Length" è maggiore di circa 3 per qualsiasi disco specificato in uno dei computer che eseguono SQL Server, è probabile che l'I/O del file sia un collo di bottiglia.

Se l'applicazione dell'ottimizzazione file o filegroup non risolve un problema di colli di bottiglia di I/O file, potrebbe essere necessario aumentare la velocità effettiva del sottosistema del disco aggiungendo unità fisiche o SAN aggiuntive.

Questo argomento descrive come applicare manualmente ottimizzazioni file e filegroup, ma queste ottimizzazioni possono anche essere scriptate. Uno script SQL di esempio viene fornito in BizTalk Server Filegroup sql del database MessageBox.

Nota

È importante notare che questo script deve essere modificato per supportare il file, il filegroup e la configurazione del disco usati dai database SQL Server per qualsiasi soluzione BizTalk Server specificata.

Database creati con una configurazione di BizTalk Server predefinita

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 PRIMARIO 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

Database Nome database predefinito Descrizione
Database di configurazione BizTalkMgmtDb Archivio meta-informazioni centrale per tutte le istanze di BizTalk Server nel gruppo di BizTalk Server.
Database MessageBox BizTalk BizTalkMsgBoxDb Archivia i predicati delle sottoscrizioni. È una piattaforma host e mantiene le code e le tabelle di stato per ogni host BizTalk Server. Nel database MessageBox vengono inoltre memorizzati i messaggi e le proprietà dei messaggi.
Database di rilevamento BizTalk BizTalkDTADb Archivia i dati di monitoraggio dell'azienda e dell'integrità rilevati dal motore di rilevamento BizTalk Server.
Database di analisi BAM BAMAnalysis SQL Server Analysis Services database che mantiene i dati cronologici aggregati per le attività aziendali.
Database con schema a stella BAM BAMStarSchema Trasforma i dati raccolti da Monitoraggio 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 da Attività aziendali e quindi esegue query per lo stato di avanzamento e i dati dopo le istanze dell'attività. Questo database esegue anche aggregazioni in tempo reale.
Database di archiviazione BAM BAMArchive Archivia i predicati delle sottoscrizioni. Il database di archiviazione BAM riduce al minimo l'accumulo di dati 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 associate SSO, nonché le credenziali utente crittografate per tutte le applicazioni affiliate.
database Motore regole di business BizTalkRuleEngineDb Repository per:

- Criteri, che sono set di regole correlate.
- Vocabolari, che sono raccolte di nomi 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 Gestione partner commerciali TPM Archivia i dati dei partner commerciali per Business Activity Services (BAS).
Monitoraggio del database di amministrazione di Analysis Server BizTalkAnalysisDb Archivia sia cubi OLAP di monitoraggio dell'integrità aziendali.

Separazione dei file di dati e dei file di log

Come indicato in precedenza, una configurazione predefinita BizTalk Server inserisce il database MessageBox in un singolo file nel filegroup predefinito. Per impostazione predefinita, i log dei dati e delle transazioni per il database MessageBox vengono inseriti nello stesso percorso e unità. Questa operazione viene eseguita per ospitare 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.

Nota

I file di log non vengono mai inclusi in un filegroup. Lo spazio del log viene gestito separatamente rispetto allo spazio dei 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 conflitti di I/O su disco o conflitti di database, è il database messageBox BizTalk Server. Questo vale sia negli scenari single che multi-MessageBox. È ragionevole presupporre che l'80% del valore di distribuzione dei database BizTalk sia derivato 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

In questa sezione dell'argomento vengono descritti 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 tra più dischi.

Aggiunta manuale di file al database MessageBox in 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 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 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.

    SQL Server finestra di dialogo Proprietà database 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 filegroup 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 su più dischi, che offrirà un vantaggio significativo 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 BizTalk Server.

Nota

Poiché SQL Server scrive nei file di log in sequenza, non vi è alcun vantaggio in termini di prestazioni grazie alla creazione di più file di log per un database 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 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, quindi fare clic su Query con connessione corrente per avviare il Editor di query SQL.

  4. Copiare lo script di esempio da BizTalk Server Filegroup di database MessageBox Script SQL nel 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 errori umani. 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