Мониторинг хранилища 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 в памяти".