Il monitoraggio avvisa se almeno una sessione è bloccata per un periodo di tempo superiore alla soglia configurata.
Il monitoraggio avvisa quando almeno una sessione è bloccata per un periodo di tempo superiore alla soglia configurata. Il blocco si verifica quando una sessione mantiene un blocco su una risorsa specifica e un'altra sessione prova ad acquisire un tipo di blocco in conflitto sulla stessa risorsa. Il blocco è una caratteristica inevitabile di qualsiasi sistema di gestione di database con concorrenza basata sul blocco. Un numero troppo elevato di blocchi può tuttavia causare problemi di prestazioni. Pertanto, un amministratore può usare questo monitoraggio per rendersi conto di quando tale condizione si verifica per un periodo di tempo superiore alla soglia configurata.
Un blocco può verificarsi per diversi motivi previsti ma può anche verificarsi in scenari in cui può essere ottimizzato senza nessuna perdita delle funzionalità corrispondenti richieste dall'applicazione che utilizza i dati.
La risoluzione dei problemi di blocco in un server richiede la conoscenza del carico di lavoro, dei requisiti e degli utenti che un amministratore deve considerare per la scelta di una linea d'azione appropriata per la soluzione. La risoluzione dei problemi di blocco potrebbe includere molte azioni potenziali, tra le quali ad esempio:
Modificare le impostazioni di configurazione di SSAS per modificare le priorità per l'esecuzione delle query. È consigliabile non eseguire modifiche di configurazione di questo tipo per i database di produzione a medio o alto impatto aziendale senza prima testare e comprendere appieno le implicazioni. L'amministratore deve leggere attentamente la Guida alle prestazioni multidimensionali di SSAS prima di effettuare tali modifiche senza la consultazione diretta e le indicazioni del supporto tecnico Microsoft, per evitare di peggiorare le prestazioni del server anziché migliorarle.
Identificare le sessioni di blocco e chiuderle manualmente. Tenere presente che un problema noto con il prodotto può bloccare l'annullamento delle query a lunga esecuzione.
Esaminare la progettazione dei database per verificarne l'efficienza, ancora una volta in base alle procedure consigliate descritte nella Guida alle prestazioni multidimensionali di SSAS. È possibile migliorare i processi di blocco a esecuzione prolungata in un server effettuando modifiche alla progettazione o alla configurazione per ridurne il grado di blocco, pianificato per un periodo in cui gli effetti del blocco non sarebbero stati così critici oppure è possibile aggiungere altre risorse al server a seconda delle esigenze definite da un'analisi dei contatori delle prestazioni per stabilire in che modo si verifica un collo di bottiglia delle prestazioni causando gli scenari di blocco prolungato.
Aumentare la soglia configurata per evitare l'avviso.
Disabilitare completamente il monitoraggio se il blocco non rappresenta un problema per il server.
Configurare le proprietà del server in Analysis Services
Guida alle prestazioni multidimensionali di SSAS
Nome | Descrizione | Valore predefinito |
Abilitato | Abilita o disabilita il flusso di lavoro | True |
Genera avvisi | Definisce se il flusso di lavoro genera un avviso | True |
Intervallo (secondi) | Intervallo di tempo ricorrente in secondi in cui eseguire il flusso di lavoro. | 900 |
Ora di sincronizzazione | Ora di sincronizzazione specificata usando il formato a 24 ore. Può essere omessa. |
|
Soglia avviso (min) | Lo stato di integrità cambia se almeno una sessione è bloccata per un periodo di tempo superiore alla soglia. | 1 |
Target | Microsoft.SQLServer.2008.AnalysisServices.MultidimensionalDatabase | ||
Parent Monitor | System.Health.PerformanceState | ||
Category | PerformanceHealth | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Warning | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Database.BlockingDuration | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Default |
<UnitMonitor ID="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.MultidimensionalDatabase.BlockingDuration" Accessibility="Public" Enabled="true" Remotable="true" Priority="Normal" Target="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.MultidimensionalDatabase" TypeID="Microsoft.SQLServer.2008.AnalysisServices.MonitorType.Database.BlockingDuration" ParentMonitorID="SystemHealth!System.Health.PerformanceState" ConfirmDelivery="false">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.2008.AnalysisServices.UnitMonitor.Database.BlockingDuration.AlertMessage">
<AlertOnState>Warning</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Warning</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/Property[@Name='WaitTime']$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="Healthy" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="Warning" HealthState="Warning"/>
</OperationalStates>
<Configuration>
<ServiceName>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance']/ServiceName$</ServiceName>
<ConnectionString>$Target/Host/Property[Type='SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Instance']/ConnectionString$</ConnectionString>
<DatabaseName>$Target/Property[Type="SQLAS!Microsoft.SQLServer.2008.AnalysisServices.Database"]/DatabaseName$</DatabaseName>
<Threshold>1</Threshold>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>