Поделиться через


In-Memory OLTP (оптимизацияIn-Memory)

Новые возможности SQL Server 2014 (12.x), In-Memory OLTP могут значительно повысить производительность приложения базы данных OLTP. In-Memory OLTP — это подсистема СУБД, оптимизированная для памяти, интегрированная в подсистему SQL Server, оптимизированная для OLTP.

Виртуальная машина Azure Вы хотите попробовать SQL Server 2016? Зарегистрируйтесь в Microsoft Azure, а затем перейдите здесь , чтобы развернуть виртуальную машину с уже установленным SQL Server 2016. После завершения можно удалить виртуальную машину.

Чтобы использовать In-Memory OLTP, вы определяете таблицу с высокой частотой обращений как оптимизируемую для работы в памяти. Таблицы, оптимизированные для памяти, полностью транзакционные, устойчивые и доступны с помощью Transact-SQL таким же образом, как и таблицы на основе дисков. Запрос может ссылаться как на оптимизированные для памяти таблицы, так и на диски. Транзакция может обновлять данные в оптимизированных для памяти таблицах и таблицах на основе дисков. Хранимые процедуры, которые ссылаются только на оптимизированные для памяти таблицы, можно скомпилировать в машинный код для дальнейшего улучшения производительности. Модуль OLTP In-Memory предназначен для чрезвычайно высокой параллельности сеансов для типа транзакций OLTP, инициируемых высокомасштабируемым средним уровнем. Для этого используются структуры данных без блокировки и оптимистичный, многоверсионный контроль конкурентности. Результат предсказуем: задержка меньше миллисекунды и высокая пропускная способность с линейным масштабированием для транзакций базы данных. Фактическое повышение производительности зависит от многих факторов, но 5–20 раз улучшения производительности являются общими.

В следующей таблице приведены шаблоны рабочей нагрузки, которые могут воспользоваться преимуществами In-Memory OLTP:

Сценарий реализации Сценарий реализации Преимущества In-Memory OLTP
Высокая скорость вставки данных из нескольких одновременных подключений. В основном хранилище только для добавления.

Не удается справляться с нагрузкой на вставку.
Устранение разногласий.

Уменьшение ведения журнала.
Производительность чтения и возможности масштабирования при периодических пакетных вставках и обновлениях. Высокопроизводительные операции чтения, особенно если каждый запрос сервера имеет несколько операций чтения для выполнения.

Не удалось выполнить требования к масштабированию.
Устраните конфликт при поступлении новых данных.

Более низкая задержка извлечения данных.

Свести к минимуму время выполнения кода.
Интенсивная обработка бизнес-логики на сервере базы данных. Ввод, обновление и удаление задач.

Интенсивные вычисления внутри хранимых процедур.

Соперничество при чтении и записи.
Устранение конфликтов.

Свести к минимуму время выполнения кода для уменьшения задержки и повышения пропускной способности.
Низкая задержка. Требовать низкой задержки бизнес-транзакций, которые типичные решения базы данных не могут достичь. Устранение разногласий.

Свести к минимуму время выполнения кода.

Выполнение кода с низкой задержкой.

Эффективное получение данных.
Управление состоянием сеанса. Частые вставки, обновления и поиск точек.

Высокая масштабируемая нагрузка с многочисленных веб-серверов без отслеживания состояния.
Устранение конфликтов.

Эффективное получение данных.

Необязательное сокращение операций ввода-вывода или их удаление при использовании не сохраняемых таблиц

Дополнительные сведения о сценариях, в которых In-Memory OLTP приведет к наибольшему повышению производительности, см. в разделе In-Memory OLTP — общие шаблоны рабочих нагрузок и рекомендации по миграции.

In-Memory OLTP повышает производительность в OLTP с короткими транзакциями.

В шаблонах программирования, такие как In-Memory OLTP, будут улучшены сценарии параллелизма, поиск по точкам, рабочие нагрузки с множеством вставок и обновлений, а также логика бизнеса в хранимых процедурах.

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

В SQL Server 2014 (12.x) наблюдаются ограничения в области Transact-SQL, поддерживаемой для In-Memory OLTP.

In-Memory OLTP обеспечивает значительный рост производительности и масштабируемости с помощью:

  • Алгоритмы, оптимизированные для доступа к данным резидентной памяти.

  • Оптимистическое управление конкурентностью, которое устраняет логические блокировки.

  • Свободные от блокировок объекты, которые устраняют все физические замки и защёлки. Потоки, выполняющие транзакционные операции, не используют блокировки или блоки для управления параллелизмом.

  • Скомпилированные в собственном коде хранимые процедуры, которые имеют значительно лучшую производительность, чем интерпретированные хранимые процедуры при доступе к оптимизированной для памяти таблице.

Это важно

Для использования In-Memory OLTP потребуется некоторые изменения синтаксиса в таблицах и хранимых процедурах. Дополнительные сведения см. в статье "Миграция на In-Memory OLTP". Прежде чем пытаться перенести таблицу на основе диска в оптимизированную для памяти таблицу, ознакомьтесь с определением того, следует ли перенести таблицу или хранимую процедуру в In-Memory OLTP , чтобы узнать, какие таблицы и хранимые процедуры будут использовать In-Memory OLTP.

В этом разделе

В этом разделе содержатся сведения о следующих понятиях:

Тема Описание
Требования к использованию таблиц Memory-Optimized Описывает требования к оборудованию и программному обеспечению и рекомендации по использованию оптимизированных для памяти таблиц.
Использование In-Memory OLTP в среде виртуальной машины Охватывает использование In-Memory OLTP в виртуализированной среде.
примеры кода OLTPIn-Memory Содержит примеры кода, демонстрирующие создание и использование оптимизированной для памяти таблицы.
Таблицы, оптимизированные для памяти Содержит таблицы, оптимизированные для памяти.
переменные таблицыMemory-Optimized Пример кода, показывающий, как использовать переменную таблицы, оптимизированную для памяти, вместо традиционной табличной переменной для уменьшения использования tempdb.
Индексы в таблицах Memory-Optimized Содержит индексы, оптимизированные для памяти.
Нативно скомпилированные хранимые процедуры Представляет хранимые процедуры, скомпилированные нативно.
Управление памятью для компонента In-Memory OLTP Общие сведения об использовании памяти и управлении ими в системе.
Создание и управление хранилищем для оптимизированных для памяти объектов Рассматриваются файлы данных и дельта-файлы, которые хранят сведения о транзакциях в таблицах, оптимизированных для памяти.
Резервное копирование и восстановление оптимизированных для памяти таблиц Описывает резервное копирование, восстановление и восстановление для оптимизированных для памяти таблиц.
Поддержка Transact-SQL для выполняющейся в памяти OLTP Обсуждает Transact-SQL поддержку In-Memory OLTP.
Поддержка высокой доступности для баз данных OLTP In-Memory Описывает группы доступности и отказоустойчивую кластеризацию в In-Memory OLTP.
Поддержка SQL Server для In-Memory OLTP Выводит список новых и обновленных синтаксисов и функций, поддерживающих оптимизированные для памяти таблицы.
Миграция на In-Memory OLTP Описывается перенос таблиц на основе дисков в оптимизированные для памяти таблицы.

Дополнительные сведения о In-Memory OLTP доступны в:

См. также

Функции базы данных