Мониторинг хранилища OLTP в памяти в Управляемый экземпляр SQL Azure

Применимо к:Управляемый экземпляр SQL Azure

При использовании OLTP в памяти данные в оптимизированных для памяти таблицах и переменных таблиц находятся в хранилище OLTP в памяти.

Определение того, соответствуют ли данные в пределах ограничения хранилища OLTP в памяти.

Уровень служб критически важный для бизнеса включает определенный объем памяти OLTP в памяти, определяемый количеством виртуальных ядер.

Оценка требований к памяти для оптимизированной для памяти таблицы работает так же, как и для SQL Server, что и в Управляемый экземпляр SQL Azure. Ознакомьтесь с разделом Оценка требований к памяти, это займет всего несколько минут.

Когда определяется максимальный размер данных пользователя, учитываются строки таблиц, табличных переменных и индексы. Кроме того, ALTER TABLE требуется достаточно места для создания новой версии всей таблицы и его индексов.

После превышения этого ограничения операции вставки и обновления могут начаться с ошибкой 41823.

Исправление ситуаций хранения OLTP вне памяти — ошибка 41823

Собрание ограничения хранилища OLTP в памяти приводит к сбою операций INSERT, UPDATE, ALTER и CREATE с ошибкой 41823. Эта ошибка может привести к прерыванию активной транзакции.

Ошибка 41823 указывает, что оптимизированные для памяти таблицы и переменные таблицы в экземпляре достигли максимального размера хранилища OLTP в памяти.

Чтобы устранить эту ошибку, выполните одно из следующих действий.

  • Удалите данные из таблиц, оптимизированных для памяти. Это позволит разгрузить данные с помощью традиционных дисковых таблиц.
  • Обновите хранилище количества виртуальных ядер в памяти для данных, необходимых для хранения в таблицах, оптимизированных для памяти.

Примечание.

В редких случаях ошибка 41823 может быть временной, т. е. достаточно доступно в памяти OLTP-хранилище, а повторная попытка операции выполнена успешно. Поэтому рекомендуется отслеживать общее доступное хранилище OLTP в памяти и повторить попытку при первом возникновении ошибки 41823. Дополнительные сведения о логике повторных попыток см. в разделе "Обнаружение конфликтов" и "Логика повторных попыток" с помощью OLTP в памяти.

Отслеживание с помощью динамических административных представлений

  • Периодически отслеживая потребление памяти, вы можете определить, как растет потребление памяти и сколько головного пространства вы оставили в ограничениях ресурсов. Определите, сколько памяти используется объектами в вашей базе данных или экземпляре. Например, динамические административные представления sys.dm_db_xtp_table_memory_stats или sys.dm_os_memory_clerks.

    • Вы можете найти потребление памяти для всех пользовательских таблиц, индексов и системных объектов, запрашивая sys.dm_db_xtp_table_memory_stats:

      SELECT object_name(object_id) AS [Name], *  
         FROM sys.dm_db_xtp_table_memory_stats;
      
    • Память, выделенная подсистеме OLTP в памяти, и оптимизированные для памяти объекты управляются так же, как и любой другой потребитель памяти в базе данных. Клерки памяти типа MEMORYCLERK_XTP учетные записи для всей памяти, выделенной подсистеме OLTP в памяти. Используйте следующий запрос sys.dm_os_memory_clerks , чтобы найти всю память, используемую подсистемой OLTP в памяти, включая память, выделенную для определенных баз данных.

      -- 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  
      
    
    
  • Дополнительные сведения об ошибках в памяти можно получить в Управляемый экземпляр SQL Azure с помощью динамического представления управления sys.dm_os_out_of_memory_events. Например:

    SELECT * FROM sys.dm_os_out_of_memory_events ORDER BY event_time DESC;
    

    Дополнительные сведения см. в разделе "Мониторинг и устранение неполадок использования памяти OLTP в памяти".