Monitorar o armazenamento OLTP in-memory na Instância Gerenciada de SQL do Azure

Aplica-se a:Instância Gerenciada de 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

A camada de serviço Comercialmente Crítico inclui uma certa quantidade de Memória OLTP In-Memory máxima, determinada pelo número de vCores.

A estimativa dos requisitos de memória para uma tabela com otimização de memória funciona no SQL Server da mesma forma como na Instância Gerenciada de 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 com o erro 41823.

Corrigir situações de armazenamento OLTP com memória insuficiente - Erro 41823

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 mensagens de erro 41823. Este erro pode fazer com que a transação ativa seja anulada.

O erro 41823 indica que as tabelas com otimização de memória e variáveis de tabela na instância 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 o armazenamento na memória com adição de contagem de vCore para os dados que você precisa manter em tabelas com otimização de memória.

Observação

Em casos raros, o erro 41823 pode ser transitório, o que significa que há armazenamento suficiente OLTP na memória disponível e que repetir a operação será bem-sucedida. Portanto, é recomendável monitorar o armazenamento OLTP na memória global disponível e tentar novamente quando encontrar erro 41823 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 na Instância Gerenciada de 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;
    

    Para obter mais informações, consulte Monitorar e solucionar problemas de uso de memória OLTP in-memory.