Share via


Monitorar o armazenamento OLTP in-memory no Banco de Dados SQL do Azure

Aplica-se a:Banco de Dados SQL do Azure

Com o In-Memory OLTP, os dados em tabelas com otimização de memória e as variáveis de tabela residem no armazenamento OLTP in-memory.

Determinar se os dados se ajustam ao limite de armazenamento OLTP na memória

Determine os limites de armazenamento das diferentes camadas de serviço. Cada camada de serviço Premium e Comercialmente Crítico tem um tamanho máximo de armazenamento OLTP in-memory.

A estimativa dos requisitos de memória para uma tabela com otimização de memória funciona no SQL Server da mesma forma como no Banco de Dados SQL do Azure. Reserve alguns minutos para examinar os Requisitos de memória estimados.

A tabela e as linhas de variável de tabela, bem como índices, contam para o tamanho máximo dos dados do usuário. Além disso, ALTER TABLE precisa de espaço suficiente para criar uma nova versão da tabela inteira e de seus índices.

Quando esse limite for excedido, as operações insert e update poderão começar a falhar. Nesse ponto, você precisa excluir dados para recuperar a memória, atualizar a camada de serviço ou o tamanho da computação do banco de dados. Para obter mais informações, consulte Corrigir situações de armazenamento OLTP fora de memória - Erros 41823 e 41840.

Monitoramento e alertas

Você pode monitorar o uso de armazenamento na memória como um percentual do limite de armazenamento do tamanho da computação no portal do Azure:

  1. Na página Visão geral do banco de dados SQL, selecione o gráfico na página Monitoramento. Ou, no menu de navegação, localize Monitoramento e selecione Métricas.
  2. Selecione Adicionar métrica.
  3. Em Básico, selecione a métrica Porcentagem de armazenamento OLTP in-memory.
  4. Para adicionar um alerta, selecione na caixa Utilização de Recursos para abrir a página Métrica e selecione Nova regra de alerta. Siga as instruções para criar uma regra de alerta de métrica.

Ou use a consulta a seguir para mostrar a utilização de armazenamento na memória:

SELECT xtp_storage_percent FROM sys.dm_db_resource_stats;

Corrigir situações de armazenamento OLTP com memória insuficiente - Erros 41823 e 41840

Atingir o limite de armazenamento OLTP in-memory em seus bancos de dados resulta na falha de operações INSERT, UPDATE, ALTER e CREATE com erro 41823 (para bancos de dados individuais) ou 41840 (para pools elásticos). Ambos os erros fazem com que a transação ativa seja anulada.

Os erros 41823 e 41840 indicam que as tabelas com otimização de memória e variáveis de tabela no banco de dados ou pool atingiu o tamanho máximo de armazenamento OLTP in-memory.

Para resolver esse erro:

  • Exclua os dados das tabelas com otimização de memória, potencialmente descarregando os dados em tabelas baseadas em disco tradicionais ou
  • Atualize a camada de serviço para uma com armazenamento na memória suficiente para os dados que você precisa manter em tabelas com otimização de memória.

Observação

Em casos raros, erros 41823 e 41840 podem ser transitórios, o que significa que há armazenamento suficiente OLTP in-memory disponível e que repetir a operação será bem-sucedida. Portanto, é recomendável monitorar o armazenamento OLTP in-memory global disponível e tentar novamente quando encontrar erro 41823 ou 41840 pela primeira vez. Para obter mais informações sobre a lógica de repetição, consulte Detecção de conflito e lógica de repetição com OLTP in-memory.

Monitorar com DMVs

  • Ao monitorar o consumo de memória periodicamente, você pode determinar como o consumo de memória está crescendo e quanto espaço livre resta nos limites de recursos. Identificar a quantidade de memória que está sendo consumido pelos objetos no banco de dados ou instância. Por exemplo, os DMVs sys.dm_db_xtp_table_memory_stats ou sys.dm_os_memory_clerks.

    • Você pode localizar o consumo de memória para todas as tabelas de usuário, índices e objetos do sistema consultando sys.dm_db_xtp_table_memory_stats:

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • A memória alocada para o mecanismo do OLTP in-memory e os objetos com otimização de memória são gerenciados da mesma maneira que qualquer outro consumidor de memória em um banco de dados. Os administradores de memória do tipo MEMORYCLERK_XTP são responsáveis por toda a memória alocada para o mecanismo do OLTP in-memory. Use a consulta a seguir em sys.dm_os_memory_clerks para localizar toda a memória usada pelo mecanismo OLTP in-memory, incluindo a memória dedicada a bancos de dados específicos.

      -- This DMV accounts for all memory used by the in-memory engine  
      SELECT [type], [name]
           , memory_node_id  
           , pages_kb/1024 AS pages_MB   
      FROM sys.dm_os_memory_clerks 
      WHERE [type] LIKE '%xtp%';
      
      type                 name       memory_node_id pages_MB  
      -------------------- ---------- -------------- --------------------  
      MEMORYCLERK_XTP      Default    0              18  
      MEMORYCLERK_XTP      DB_ID_5    0              1358  
      MEMORYCLERK_XTP      Default    64             0  
      
    
    
  • Você também pode obter mais informações sobre erros de memória insuficiente no Banco de Dados SQL do Azure com o modo de exibição de gerenciamento dinâmico sys.dm_os_out_of_memory_events. Por exemplo:

    SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;