Мониторинг хранилища OLTP в памяти в База данных SQL Azure
Применимо к: База данных SQL Azure
При использовании OLTP в памяти данные в оптимизированных для памяти таблицах и переменных таблиц находятся в хранилище OLTP в памяти.
- Базы данных уровня Premium (DTU) и критически важный для бизнеса (vCore) поддерживают таблицы OLTP в памяти.
- Гипермасштабирование поддерживает подмножество объектов OLTP в памяти, но не включает оптимизированные для памяти таблицы. Дополнительные сведения см. в разделе об ограничениях гипермасштабирования.
Определение того, соответствуют ли данные в пределах ограничения хранилища OLTP в памяти.
Определите возможности хранения для различных уровней служб. Каждый уровень служб Premium и критически важный для бизнеса имеет максимальный размер хранилища OLTP в памяти.
- Ограничения ресурсов для отдельной базы данных на основе DTU
- Ограничения ресурсов для эластичных пулов на основе DTU
- Ограничения ресурсов для отдельной базы данных при использовании модели на основе виртуальных ядер
- Ограничения ресурсов для эластичных пулов при использовании модели на основе виртуальных ядер
Оценка требований к памяти для таблицы, оптимизированной для памяти, выполняется одинаково как на сервере SQL Server, так и в Базе данных SQL Azure. Ознакомьтесь с разделом Оценка требований к памяти, это займет всего несколько минут.
Когда определяется максимальный размер данных пользователя, учитываются строки таблиц, табличных переменных и индексы. Кроме того, ALTER TABLE
требуется достаточно места для создания новой версии всей таблицы и его индексов.
После превышения этого ограничения операции вставки и обновления могут начаться сбоем. В таком случае потребуется либо удалить данные, чтобы освободить память, либо повысить уровень служб или увеличить объем вычислительных ресурсов базы данных. Дополнительные сведения см. в статье "Исправление ситуаций хранения OLTP в памяти" — ошибки 41823 и 41840.
Мониторинг и оповещения
Вы можете отслеживать использование хранилища в памяти в процентах от ограничения хранилища для размера вычислительных ресурсов в портал Azure:
- На странице обзора базы данных SQL выберите диаграмму на странице мониторинга. Или в меню навигации найдите "Мониторинг" и выберите "Метрики".
- Выберите Добавить метрику.
- В разделе "Базовый" выберите процент хранилища OLTP в памяти.
- Чтобы добавить оповещение, выберите поле "Использование ресурсов", чтобы открыть страницу метрик, а затем выберите новое правило генерации оповещений. Следуйте инструкциям по созданию правила генерации оповещений метрик.
Кроме того, используйте следующий запрос, чтобы отобразить использование хранилища в памяти:
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;