如果至少一个会话的阻塞时间长于配置的阈值,监视器将发出警报。
当至少一个 SSAS 表格会话的阻塞时间长于配置的阈值时,监视器将发出警报。当一个会话持有特定资源的锁,而另一个会话尝试获取同一资源上的相冲突锁类型时,则会出现阻塞。对于采用基于锁的并发机制的数据库管理系统而言,阻塞是不可避免的。但阻塞过多可能会导致性能问题,因此管理员可以使用此监视器了解何时会出现长于配置阈值的情况。
阻塞可能会因很多预期的原因发生,但也可能在无需影响使用数据的应用程序所需的相应功能即可改善的情况下发生。
解决服务器上的阻塞问题需要了解工作负荷、要求和用户,管理员在确定正确的修复过程时必须考虑这些因素。修复阻塞问题可能包括多个可能的操作,包括但不限于以下内容:
调整 SSAS 配置设置以改变运行查询的优先级。在未先进行初步测试并完全了解影响的情况下,不应在对业务有中等或较高影响的生产数据库上执行此类配置更改。未经 Microsoft 技术支持人员的直接咨询和指导,在进行任何此类更改之前,管理员应全面阅读 SSAS 多维性能指南,否则可能会对服务器性能有负面影响,而不是改进性能。
确认阻塞会话并手动终止这些会话。请注意,该产品有一个已知问题可能会阻止取消长期运行的查询。
根据 SSAS 多维性能指南中建议的宝贵的最佳实践,再次查看数据库设计以了解效率。在服务器上长期运行的阻塞作业可通过以下方法来改进: 更改设计或配置以减少锁定度,计划发生的阻塞不严重的时间,或者通过查看性能计数器以确定发生性能瓶颈并导致长期阻塞情况之处确定必需性而向服务器中添加更多资源。
增加配置的阈值以避免警报。
如果服务器无需考虑阻塞,则完全禁用监视器。
名称 | 说明 | 默认值 |
已启用 | 启用或禁用工作流 | 是 |
生成警报 | 定义工作流是否生成警报 | 是 |
间隔(秒) | 运行工作流的重复间隔时间(秒)。 | 900 |
同步时间 | 使用 24 小时格式指定的同步时间。可以忽略。 |
|
警告阈值(分钟) | 如果至少一个会话的阻塞时间长于阈值,运行状况将发生更改。 | 1 |
超时(秒) | 指定允许工作流在被关闭并标记为失败之前运行的时间。 | 300 |
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/>
<TimeoutSeconds>300</TimeoutSeconds>
</Configuration>
</UnitMonitor>