Оптимизированная для памяти файловая группа
Область применения: 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)