Мониторинг хранилища OLTP в памяти в База данных SQL Azure

Применимо к:База данных SQL Azure

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

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

Определите возможности хранения для различных уровней служб. Каждый уровень служб Premium и критически важный для бизнеса имеет максимальный размер хранилища OLTP в памяти.

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

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

После превышения этого ограничения операции вставки и обновления могут начаться сбоем. В таком случае потребуется либо удалить данные, чтобы освободить память, либо повысить уровень служб или увеличить объем вычислительных ресурсов базы данных. Дополнительные сведения см. в статье "Исправление ситуаций хранения OLTP в памяти" — ошибки 41823 и 41840.

Мониторинг и оповещения

Вы можете отслеживать использование хранилища в памяти в процентах от ограничения хранилища для размера вычислительных ресурсов в портал Azure:

  1. На странице обзора базы данных SQL выберите диаграмму на странице мониторинга. Или в меню навигации найдите "Мониторинг" и выберите "Метрики".
  2. Выберите Добавить метрику.
  3. В разделе "Базовый" выберите метрики в памяти OLTP служба хранилища процента.
  4. Чтобы добавить оповещение, выберите поле "Использование ресурсов", чтобы открыть страницу метрик, а затем выберите новое правило генерации оповещений. Следуйте инструкциям по созданию правила генерации оповещений метрик.

Кроме того, используйте следующий запрос, чтобы отобразить использование хранилища в памяти:

SELECT xtp_storage_percent FROM sys.dm_db_resource_stats;

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

Собрание ограничения хранилища OLTP в памяти в базе данных приводит к сбою операций INSERT, UPDATE, ALTER и CREATE с ошибкой 41823 (для отдельных баз данных) или ошибкой 41840 (для эластичных пулов). Обе ошибки приводят к прерыванию активной транзакции.

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

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

  • Удалите данные из таблиц, оптимизированных для памяти. Это позволит разгрузить данные с помощью традиционных дисковых таблиц.
  • Если вам необходимо сохранить данные в таблицах, оптимизированных для памяти, повысьте уровень служб, чтобы получить достаточный объем хранилища In-Memory.

Примечание.

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