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

Новое в SQL Server 2014 (12.x)SQL Server 2014 (12.x), In-Memory OLTPIn-Memory OLTP может значительно улучшить производительность приложения базы данных OLTP.New in SQL Server 2014 (12.x)SQL Server 2014 (12.x), In-Memory OLTPIn-Memory OLTP can significantly improve OLTP database application performance. In-Memory OLTPIn-Memory OLTP является оптимизированным для памяти ядром СУБД, встроенным в ядро SQL ServerSQL Server, оптимизированное для OLTP. is a memory-optimized database engine integrated into the SQL ServerSQL Server engine, optimized for OLTP.

Виртуальная машина AzureAzure Virtual Machine Хотите попробовать SQL Server 2016?Do you want to try out SQL Server 2016? Зарегистрируйтесь в Microsoft Azure, а затем перейдите на эту страницу , чтобы запустить виртуальную машину с уже установленным SQL Server 2016.Sign up for Microsoft Azure, and then go Here to spin up a Virtual Machine with SQL Server 2016 already installed. По завершении вы сможете ее удалить.You can delete the Virtual Machine when you’re finished.

Для использования In-Memory OLTPIn-Memory OLTP, вы определяете труднодоступную таблицу как оптимизированную для памяти.To use In-Memory OLTPIn-Memory OLTP, you define a heavily accessed table as memory optimized. оптимизированные для памяти таблицы являются полностью транзакционными, устойчивыми доступ к которым обеспечивается с помощью Transact-SQLTransact-SQL таким же способом, как и к таблицам, находящимся на диске.Memory-optimized-tables are fully transactional, durable, and are accessed using Transact-SQLTransact-SQL in the same way as disk-based tables. Запрос может ссылаться и на таблицы, оптимизированные для памяти, и на таблицы, находящиеся на диске.A query can reference both memory-optimized tables and disk-based tables. Транзакция может обновлять данные в таблицах, оптимизированных для памяти и в таблицах, находящихся на диске.A transaction can update data in memory-optimized tables and disk-based tables. Хранимые процедуры, которые ссылаются только на таблиц, оптимизированные для памяти, могут быть скомпилированы в машинный код для последующего улучшения производительности.Stored procedures that only reference memory-optimized tables can be natively compiled into machine code for further performance improvements. Ядро In-Memory OLTPIn-Memory OLTP разработано для очень высокого параллелизма сеанса для типов транзакций OLTP, полученных из горизонтально масштабируемого среднего уровня.The In-Memory OLTPIn-Memory OLTP engine is designed for extremely high session concurrency for OLTP type of transactions driven from a highly scaled-out middle-tier. Для этих целей оно использует структуры данных без защелок и оптимистичное управление многовариантным параллелизмом.To achieve this, it uses latch-free data structures and optimistic, multi-version concurrency control. Результат является предсказуемым, малая задержка до миллисекунды и высокая пропускная способность с линейной шкалой для транзакций базы данных.The result is predictable, sub-millisecond low latency and high throughput with linear scaling for database transactions. Фактический рост производительности зависит от многих факторов, но улучшение производительности в 5–20 раз является обычным явлением.The actual performance gain depends on many factors, but 5-to-20 times performance improvements are common.

Следующая таблица резюмирует типы рабочих нагрузок, которые больше всего могут получить выгоду от использования In-Memory OLTPIn-Memory OLTP:The following table summarizes the workload patterns that may benefit most by using In-Memory OLTPIn-Memory OLTP:

Сценарий РеализацииImplementation Scenario Сценарий РеализацииImplementation Scenario Преимущества In-Memory OLTPIn-Memory OLTPBenefits of In-Memory OLTPIn-Memory OLTP
Высокая интенсивность данных от многих конкурентных подключений. High data insertion rate from multiple concurrent connections. Первоначально хранение только путем присоединения.Primarily append-only store.

Невозможность быть на одном уровне с добавленной рабочей нагрузкой.Unable to keep up with the insert workload.
Устранение конкуренции.Eliminate contention.

Сокращение журнала.Reduce logging.
Чтение производительности и масштабирование с периодичным добавлением пакетов и обновлений.Read performance and scale with periodic batch inserts and updates. Высокопроизводительные операции чтения, особенно когда каждый запрос сервера должен выполнить многие операции чтения. High performance read operations, especially when each server request has multiple read operations to perform.

Неспособность соответствовать требованиям вертикального масштабирования.Unable to meet scale-up requirements.
Устранение конкуренции при получении новых данных.Eliminate contention when new data arrives.

Малая задержка при извлечении данных.Lower latency data retrieval.

Уменьшение времени на выполнение кода.Minimize code execution time.
Интенсивная обработка бизнес-логики на сервере базы данных.Intensive business logic processing in the database server. Добавление, обновление и удаление рабочей нагрузки.Insert, update, and delete workload.

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

Конкуренция чтения и записи.Read and write contention.
Устранение конкуренции.Eliminate contention.

Уменьшение времени на выполнение кода для сокращенной задержки и улучшенной пропускной способности.Minimize code execution time for reduced latency and improved throughput.
Низкая задержка.Low latency. Необходима бизнес-транзакции с низкой задержкой, которые обычно не могут быть достигнуты решениями базы данных.Require low latency business transactions which typical database solutions cannot achieve. Устранение конкуренции.Eliminate contention.

Уменьшение времени на выполнение кода.Minimize code execution time.

Низкая задержка выполнения кода.Low latency code execution.

Эффективное извлечение данных.Efficient data retrieval.
Управление состоянием сеанса.Session state management. Частый ввод, обновление и поиск точки.Frequent insert, update and point lookups.

Большая нагрузка от многочисленных веб-серверов.High scale load from numerous stateless web servers.
Устранение конкуренции.Eliminate contention.

Эффективное извлечение данных.Efficient data retrieval.

Дополнительное снижение или удаление операций ввода-вывода при использовании не устойчивых таблицOptional IO reduction or removal, when using non-durable tables

За дополнительной информацией относительно сценариев, в которых In-Memory OLTPIn-Memory OLTP приведет к наибольшему росту производительности, обратитесь к In-Memory OLTP – Рекомендации по Общим Шаблонам Рабочих Нагрузок и Миграции.For more information about scenarios where In-Memory OLTPIn-Memory OLTP will result in the greatest performance gains, see In-Memory OLTP – Common Workload Patterns and Migration Considerations.

In-Memory OLTPIn-Memory OLTP максимально улучшит производительность в OLTP с помощью транзакций с коротким циклом выполнения. will improve performance best in OLTP with short-running transactions.

Шаблоны программирования, которые In-Memory OLTPIn-Memory OLTP улучшит, включают в себя сценарии параллелизма, поиски точки, рабочие нагрузки, которые содержат много добавлений и обновлений, а также бизнес-логику в хранимых процедурах.Programming patterns that In-Memory OLTPIn-Memory OLTP will improve include concurrency scenarios, point lookups, workloads where there are many inserts and updates, and business logic in stored procedures.

Интеграция со средствами SQL ServerSQL Server означает, что в одной базе данных можно иметь как оптимизированные для памяти таблицы, так и дисковые таблицы, а также запрашивать оба типа таблиц.Integration with SQL ServerSQL Server means you can have both memory-optimized tables and disk-based tables in the same database, and query across both types of tables.

В службе SQL Server 2014 (12.x)SQL Server 2014 (12.x) имеются ограничения в контактной зоне службы Transact-SQLTransact-SQL , поддерживаемые службой In-Memory OLTPIn-Memory OLTP.In SQL Server 2014 (12.x)SQL Server 2014 (12.x) there are limitations in Transact-SQLTransact-SQL surface area supported for In-Memory OLTPIn-Memory OLTP.

In-Memory OLTPIn-Memory OLTP обеспечивает значительное увеличение производительности и масштабируемости с помощью: achieves significant performance and scalability gains by using:

  • алгоритмов, оптимизированных для доступа к хранимым в памяти данным;Algorithms that are optimized for accessing memory-resident data.

  • управления оптимистичным параллелизмом, устраняющим логические блокировки;Optimistic concurrency control that eliminates logical locks.

  • Блокирует свободные объекты, которые устраняют все физические блокировки и защелкиLock free objects that eliminate all physical locks and latches. Потоки, выполняющие транзакционную работу, не используют блокировки или кратковременные блокировки для управления параллелизмом.Threads that perform transactional work don’t use locks or latches for concurrency control.

  • Хранимые процедуры, скомпилированные в собственном коде, которые обладают значительно лучшей производительностью, чем интерпретированные хранимые процедуры, во время доступа к оптимизированной для памяти таблице.Natively compiled stored procedures, which have significantly better performance than interpreted stored procedures, when accessing a memory-optimized table.

Важно!

Некоторые изменения синтаксиса таблиц и хранимых процедур будут необходимы для использования службы In-Memory OLTPIn-Memory OLTP.Some syntax changes to tables and stored procedures will be required to use In-Memory OLTPIn-Memory OLTP. Дополнительные сведения см. в статье Миграция в In-Memory OLTP.For more information, see Migrating to In-Memory OLTP. Перед переносом дисковой таблицы в таблицу, оптимизированную для памяти, прочитайте статью Определение, должна ли таблица или хранимая процедура быть перенесена в In-Memory OLTP, чтобы выяснить, какие таблицы и хранимые процедуры получат наибольшее преимущество от применения In-Memory OLTPIn-Memory OLTP.Before you attempt to migrate a disk-based table to a memory-optimized table, read Determining if a Table or Stored Procedure Should Be Ported to In-Memory OLTP to see which tables and stored procedures will benefit from In-Memory OLTPIn-Memory OLTP.

В этом разделеIn this section

В разделе рассматриваются следующие понятия.This section provides information about the following concepts:

РазделTopic ОписаниеDescription
Требования для использования таблиц, оптимизированных для памятиRequirements for Using Memory-Optimized Tables Перечисляются требования к программному обеспечению и оборудованию, а также рекомендации по использованию оптимизированных для памяти таблиц.Discusses hardware and software requirements and guidelines for using memory-optimized tables.
Использование выполняющейся в памяти OLTP в среде ВМUsing In-Memory OLTP in a VM Environment Описывает использование службы In-Memory OLTPIn-Memory OLTP в виртуализированной среде.Covers using In-Memory OLTPIn-Memory OLTP in a virtualized environment.
Примеры кода In-Memory OLTPIn-Memory OLTP Code Samples Содержит образцы кода, которые показывают, как создавать и использовать оптимизированные для памяти таблицы.Contains code samples that show how to create and use a memory-optimized table.
Таблицы, оптимизированные для памятиMemory-Optimized Tables Дает вводное описание таблиц, оптимизированных для памяти.Introduces memory-optimized tables.
Основные сведения о табличных переменных, оптимизированных для памятиMemory-Optimized Table Variables Пример кода, показывающий, как использовать переменную оптимизированной для памяти таблицы вместо традиционной табличной переменной для уменьшения использования базы данных tempdb.Code example showing how to use a memory-optimized table variable instead of a traditional table variable to reduce tempdb use.
Индексы для оптимизированных для памяти таблицIndexes on Memory-Optimized Tables Содержит базовое описание индексов, оптимизированных для памяти.Introduces memory-optimized indexes.
Скомпилированные в собственном коде хранимые процедурыNatively Compiled Stored Procedures Содержит базовое описание хранимых процедур, скомпилированных в собственном коде.Introduces natively compiled stored procedures.
Управление памятью для компонента "Выполняющаяся в памяти OLTP"Managing Memory for In-Memory OLTP Основные сведения об управлении памятью системы.Understanding and managing memory usage on your system.
Создание и управление хранилищем для оптимизированных для памяти объектовCreating and Managing Storage for Memory-Optimized Objects Описывает файлы данных и разностные файлы, в которых хранятся сведения о транзакциях в оптимизированных для памяти таблицах.Discusses data and delta files, which store information about transactions in memory-optimized tables.
Резервное копирование и восстановление оптимизированных для памяти таблицBackup, Restore, and Recovery of Memory-Optimized Tables Описывает резервное копирование, восстановление и восстановление оптимизированных для памяти таблиц. Discusses backup, restore, and recovery for memory-optimized tables.
Поддержка Transact-SQL для выполняющейся в памяти OLTPTransact-SQL Support for In-Memory OLTP Описывает поддержку службой Transact-SQLTransact-SQL службы In-Memory OLTPIn-Memory OLTP.Discusses Transact-SQLTransact-SQL support for In-Memory OLTPIn-Memory OLTP.
Поддержка высокого уровня доступности в базах данных OLTP в памятиHigh Availability Support for In-Memory OLTP databases Описывает группы доступности и отказоустойчивые кластеры в службе In-Memory OLTPIn-Memory OLTP.Discusses availability groups and failover clustering in In-Memory OLTPIn-Memory OLTP.
Поддержка SQL Server для In-Memory OLTPSQL Server Support for In-Memory OLTP Описание нового и обновленного синтаксиса и функций, поддерживающих оптимизированные для памяти таблицы.Lists new and updated syntax and features supporting memory-optimized tables.
Миграция в выполняющуюся в памяти OLTPMigrating to In-Memory OLTP Рассматриваются способы миграции дисковых таблиц в оптимизированные для памяти таблицы.Discusses how to migrate disk-based tables to memory-optimized tables.

Больше информации о службе In-Memory OLTPIn-Memory OLTP доступно в:More information about In-Memory OLTPIn-Memory OLTP is available on:

См. такжеSee Also

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