Espaço livre no contêiner do grupo de arquivos de dados com otimização de memória

Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent (UnitMonitor)

O monitor relata um aviso quando o espaço em disco disponível para o contêiner do grupo de arquivos de dados com otimização de memória cai abaixo da configuração do Limite de Aviso, expresso como percentual da soma do tamanho do contêiner do grupo de arquivos de dados com otimização de memória mais o espaço livre em disco. O monitor reporta um alerta crítico quando o espaço livre cai abaixo do Limite Crítico.

Knowledge Base article:

Resumo

O monitor relata um aviso quando o espaço em disco disponível para o contêiner do grupo de arquivos de dados com otimização de memória cai abaixo da configuração do Limite de Aviso, expresso como percentual da soma do tamanho do contêiner do grupo de arquivos de dados com otimização de memória mais o espaço livre em disco. O monitor reporta um alerta crítico quando o espaço livre cai abaixo do Limite Crítico.

A pasta do contêiner do grupo de arquivos de dados com otimização de memória geralmente cresce com o tempo conforme mais dados são adicionados nas tabelas com otimização de memória. Como tal, os administradores desejarão monitorar para garantir que exista espaço suficiente restante no local de armazenamento para a pasta do contêiner.

Causas

Quando o espaço em disco disponível na unidade em que o local de armazenamento do banco de dados está configurado se torna muito baixo, algumas falhas podem ocorrer impedindo o processamento de dados com êxito, atrasando as consultas do usuário ou afetando outros aplicativos que compartilham a mesma alocação do espaço em disco.

O armazenamento é alocado como parte das operações DML nas tabelas otimizadas de memória durável. Você precisa configurar o armazenamento até 4x do tamanho em memória das tabelas otimizadas de memória durável. Se você configurou o armazenamento corretamente, mas ainda está ficando com pouco espaço de armazenamento livre, é possível que o IOPS ao qual os contêineres dão suporte não seja capaz de dar conta da demanda da carga de trabalho. A recomendação geral para contêineres é dar suporte a 3x o IOPS da taxa de geração de dados para contagem da população inicial dos arquivos de dados/delta e para operação de mesclagem automática que precisa ler os arquivos delta/de dados de origem e mesclá-los em um CFP de destino.

Resoluções

A(s) resolução(ões) para o baixo espaço de disco disponível depende(m) da(s) causa(s) raiz, que deve(m) ser investigada(s) em cada ocorrência quando esse problema acontecer. A condição pode ser atenuada por qualquer uma das várias possíveis abordagens:

Parâmetros Substituíveis

Nome

Descrição

Valor Padrão

Prioridade do Alerta

Define a Prioridade do Alerta.

Normal

Severidade do Alerta

Define a Severidade do Alerta.

Erro

Tamanho Máximo do Arquivo do Azure (MB)

O tamanho máximo do arquivo de dados armazenado no armazenamento de BLOBs do Azure. O fluxo de trabalho considerará esse valor como uma capacidade máxima de armazenamento para cada arquivo.

1.048.576

Limite Crítico

O estado do monitor será alterado para 'Crítico' se o valor cair abaixo desse limite.

10

Habilitado

Habilita ou desabilita o fluxo de trabalho.

Sim

Gera Alertas

Define se o fluxo de trabalho gera ou não um Alerta.

Sim

Intervalo (segundos)

O intervalo de tempo recorrente em segundos no qual executar o fluxo de trabalho.

900

Tempo de Sincronização

O tempo de sincronização especificado usando um formato de 24 horas. Pode ser omitido.

 

Tempo Limite (em segundos)

Especifica o tempo que o fluxo de trabalho pode para ser executado antes de ser fechado e marcado como falha.

300

Tempo limite da conexão de banco de dados (segundos)

O fluxo de trabalho falhará e registrará um evento, se ele não conseguir acessar o banco de dados durante o período especificado.

15

Limite de Aviso

O estado do monitor será alterado para 'Aviso' se o valor cair abaixo desse limite.

20

Element properties:

TargetMicrosoft.SQLServer.Windows.Container
Parent MonitorSystem.Health.PerformanceState
CategoryPerformanceHealth
EnabledFalse
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.SQLServer.Windows.MonitorType.Container.FreeSpacePercent
RemotableTrue
AccessibilityPublic
Alert Message
MSSQL no Windows: espaço livre insuficiente para o contêiner do grupo de arquivos de dados com otimização de memória
Apenas {6}\% do espaço livre disponível no Contêiner do Grupo de Arquivos de Dados com Otimização de Memória "{0}", que é menor do que o limite configurado para o alerta.
Servidor: {4}
Instância do SQL Server: {3}
Banco de dados: {2}
Grupo de arquivos: {1}
Contêiner: {0}
Tamanho do disco: {5} MB
Espaço livre do Contêiner do Grupo de Arquivos de Dados com Otimização de Memória: {7} MB ({6}\%)
Tamanho do Contêiner do Grupo de Arquivos de Dados com Otimização de Memória: {8} MB
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent" Accessibility="Public" Enabled="false" Target="SqlDiscW!Microsoft.SQLServer.Windows.Container" ParentMonitorID="Health!System.Health.PerformanceState" Remotable="true" Priority="Normal" TypeID="Microsoft.SQLServer.Windows.MonitorType.Container.FreeSpacePercent" ConfirmDelivery="true">
<Category>PerformanceHealth</Category>
<AlertSettings AlertMessage="Microsoft.SQLServer.Windows.Monitor.Container.FreeSpacePercent.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</AlertParameter1>
<AlertParameter2>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</AlertParameter2>
<AlertParameter3>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</AlertParameter3>
<AlertParameter4>$Target/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Filegroup"]/GroupName$</AlertParameter4>
<AlertParameter5>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</AlertParameter5>
<AlertParameter6>$Data/Context/Property[@Name='DiskTotalSizeMB']$</AlertParameter6>
<AlertParameter7>$Data/Context/Property[@Name='FreeSpacePercent']$</AlertParameter7>
<AlertParameter8>$Data/Context/Property[@Name='FreeSpaceMB']$</AlertParameter8>
<AlertParameter9>$Data/Context/Property[@Name='AllocatedSizeMB']$</AlertParameter9>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Critical" MonitorTypeStateID="ContainerFreeSpaceCritical" HealthState="Error"/>
<OperationalState ID="Warning" MonitorTypeStateID="ContainerFreeSpaceWarning" HealthState="Warning"/>
<OperationalState ID="Success" MonitorTypeStateID="ContainerFreeSpaceSuccess" HealthState="Success"/>
</OperationalStates>
<Configuration>
<MachineName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/MachineName$</MachineName>
<NetbiosComputerName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/NetbiosComputerName$</NetbiosComputerName>
<InstanceName>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/InstanceName$</InstanceName>
<DatabaseName>$Target/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.Database"]/DatabaseName$</DatabaseName>
<FileName>$Target/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.File"]/FileName$</FileName>
<AzureMaxFileSizeMB>1048576</AzureMaxFileSizeMB>
<CriticalThreshold>10</CriticalThreshold>
<WarningThreshold>20</WarningThreshold>
<ConnectionString>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/ConnectionString$</ConnectionString>
<InstanceVersion>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Version$</InstanceVersion>
<InstanceEdition>$Target/Host/Host/Host/Property[Type="SqlCoreLib!Microsoft.SQLServer.Core.DBEngine"]/Edition$</InstanceEdition>
<MonitoringType>$Target/Host/Host/Host/Property[Type="SqlDiscW!Microsoft.SQLServer.Windows.DBEngine"]/MonitoringType$</MonitoringType>
<SqlExecTimeoutSeconds>60</SqlExecTimeoutSeconds>
<SqlTimeoutSeconds>15</SqlTimeoutSeconds>
<TimeoutSeconds>300</TimeoutSeconds>
<IntervalSeconds>900</IntervalSeconds>
<SyncTime/>
</Configuration>
</UnitMonitor>