Оптимизированная для памяти файловая группа

Применимо к:SQL Server

Для создания оптимизированных для памяти таблиц необходимо сначала создать оптимизированную для памяти файловую группу. Оптимизированная для памяти файловая группа содержит один или несколько контейнеров. В каждом контейнере содержатся файлы данных или разностных файлы (или и те и другие).

Несмотря на то, что строки данных из SCHEMA_ONLY таблиц не сохраняются, а метаданные для оптимизированных для памяти таблиц и скомпилированные в собственном коде хранимые процедуры хранятся в традиционных каталогах, подсистема OLTP в памяти по-прежнему требует оптимизированной для памяти файловой группы для оптимизированных для памяти таблиц, SCHEMA_ONLY чтобы обеспечить единый интерфейс для баз данных с оптимизированными для памяти таблицами.

В основе оптимизированной для памяти файловой группы лежит файловая группа FILESTREAM, но при этом имеются следующие отличия.

  • Можно создать только одну оптимизированную для памяти файловую группу для одной базы данных. Необходимо явно пометить файловую группу как содержащую данные memory_optimized_data. Файловую группу можно создать при создании базы данных или же добавить ее позднее.

    ALTER DATABASE imoltp ADD FILEGROUP imoltp_mod CONTAINS MEMORY_OPTIMIZED_DATA  
    
  • В файловую группу MEMORY_OPTIMIZED_DATA нужно добавить один или несколько контейнеров. Например:

    ALTER DATABASE imoltp ADD FILE (name='imoltp_mod1', filename='c:\data\imoltp_mod1') TO FILEGROUP imoltp_mod  
    
  • Для создания оптимизированной для памяти файловой группы не требуется включать файловый поток (Включение и настройка FILESTREAM). Сопоставление с файловым потоком выполняется подсистемой OLTP в памяти.

  • В оптимизированную для памяти файловую группу можно добавлять новые контейнеры. Необходимость развернуть новый контейнер может возникнуть, когда требуется расширить хранилище, которое нужно надежной, оптимизированной для памяти таблице, а также для распределения ввода-вывода по нескольким контейнерам.

  • Перемещение данных в оптимизированной для памяти файловой группе оптимизировано в конфигурации группы доступности AlwaysOn. В отличие от файлов FILESTREAM, которые отправляются во вторичные реплики, файлы контрольных точек (файлы данных и разностные файлы) из оптимизированной для памяти файловой группы не отправляются во вторичные реплики. Файлы данных и разностные файлы формируются на вторичной реплике с помощью журнала транзакций.

Заметка

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

Настройка оптимизированной для памяти файловой группы

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

При использовании нескольких контейнеров, размещенных на нескольких дисках, файлы данных и разностные файлы распределяются по контейнерам путем циклического перебора. Первый файл данных выделяется из первого контейнера, разностный файл — из следующего контейнера, после чего дальнейшее выделение производится таким же образом. Эта схема выделения позволяет равномерно распределять файлы данных и разностные файлы по контейнерам при наличии нечетного числа дисков, каждый из которых сопоставлен с одним контейнером. Однако при наличии четного числа дисков, каждый из которых сопоставлен с одним контейнером, хранилище может получиться несбалансированным, когда файлы данных будут сопоставляться с нечетными дисками, а разностные файлы — с четными. Для получения сбалансированного потока ввода-вывода при восстановлении рекомендуется размещать пары файлов данных и разностных файлов на одном и том же шпинделе (или в хранилище).

При настройке хранилища необходимо обеспечить наличие свободного места на диске, которое будет в четыре раза больше размера надежных, оптимизированных для памяти таблиц. Также удостоверьтесь, что подсистема ввода-вывода поддерживает необходимое число операций в секунду для вашей рабочей нагрузки. Если пары файлов данных и разностных файлов заполняются при данном IOPS, необходимо в три раза увеличить IOPS с учетом операций сортировки и объединения. Можно увеличить объем хранилища и IOPS путем добавления в оптимизированную для памяти файловую группу одного или нескольких контейнеров.

Внимание

Если значение MAXSIZE задается для оптимизированной для памяти файловой группы и файлы контрольных точек превышают максимальный размер контейнера, база данных будет помечена как подозрительная (SUSPECT).
В этом случае не пытайтесь задать для базы данных режим OFFLINE и ONLINE, так как это приведет к переходу базы данных в состояние RECOVERY_PENDING.

См. также

Создание и управление хранилищем для оптимизированных для памяти объектов
Файлы и файловые группы базы данных
Параметры инструкции ALTER DATABASE для файлов и файловых групп (Transact-SQL)