Настройка хранилища оптимизированных для памяти таблиц
Область применения: SQL Server
Необходимо настроить емкость подсистемы хранения и количество операций ввода-вывода в секунду (IOPS).
Емкость хранилища
Чтобы оценить объем памяти, который потребуется для размещения надежных, оптимизированных для памяти таблиц баз данных, используйте сведения из раздела Оценка требований к объему памяти для таблиц, оптимизированных для памяти . Так как индексы не сохраняются в таблицах, оптимизированных для памяти, не учитывайте размер индексов.
После определения размера необходимо выделить место на диске, которого будет достаточно для хранения файлов контрольных точек, используемых для хранения измененных данных. Хранимые данные содержат не только содержимое новых строк, добавленных в таблицы в памяти, но и новые версии существующих строк. Объем хранилища увеличивается по мере вставки или обновления строк. Версии строк объединяются, и хранилище освобождается при усечении журнала. Если усечение журнала откладывается по какой-либо причине, хранилище OLTP в памяти будет увеличиваться.
Хорошей отправной точкой при определении размера хранилища для этой области будет зарезервировать в четыре раза больше места, чем для длительно используемых таблиц в памяти. При необходимости отслеживайте использование пространства и подготовьтесь к увеличению размера доступного хранилища.
IOPS хранилища
OlTP в памяти может значительно увеличить пропускную способность рабочей нагрузки. Поэтому важно убедиться в том, что подсистема ввода-вывода не станет узким местом.
При миграции таблиц, находящихся на диске, в оптимизированные для памяти таблицы убедитесь в том, что журнал транзакций находится на носителе, который способен поддерживать возросшее число операций журнала транзакций. Например, если носитель поддерживает обработку операций журнала транзакций на скорости в 100 МБ/сек, а оптимизированные для памяти таблицы работают в пять раз быстрее, носитель, на котором находится журнал транзакций, также должен позволять увеличить производительность в пять раз, чтобы операции журнала транзакций не стали узким местом в системе.
Оптимизированные для памяти таблицы сохраняются в файлах контрольных точек, которые находятся в одном или нескольких контейнерах. Каждый контейнер обычно следует сопоставить с собственным запоминающим устройством. Он служит для увеличения емкости хранилища и числа операций ввода-вывода в секунду. Необходимо убедиться в том, что последовательные операции ввода-вывода носителя могут поддерживать пропускную способность журнала транзакций, которая будет в три раза выше. Объем данных, записываемых в файлы контрольных точек, составляет 256 КБ для файлов данных и 4 КБ для разностных файлов.
- Например, если оптимизированные для памяти таблицы выполняют операции с журналом транзакций с постоянной скоростью 500 МБ/с, то хранилище оптимизированных для памяти таблиц должно поддерживать скорость ввода-вывода в 1,5 ГБ/с. Потребность в увеличении постоянной пропускной способности журнала транзакций в три раза обусловлена тем, что, как было отмечено, в пары файла данных и разностного файла сначала записываются начальные данные, а затем в рамках операции объединения их необходимо считывать и перезаписывать.
Еще одним фактором при оценке IOPS для хранилища является время восстановления оптимизированных для памяти таблиц. Данные из надежных таблиц должны быть считаны в память до того, как база данных станет доступна приложениям. Обычно загрузку данных в оптимизированные для памяти таблицы можно выполнять со скоростью IOPS. Поэтому, если общий объем хранилища для надежных, оптимизированных для памяти таблиц составляет 60 ГБ и необходимо обеспечить возможность загружать эти данные за одну минуту, для хранения должно быть задано значение IOPS в 1 ГБ/сек.
Файлы контрольных точек, как правило, распределяются равномерно по всем контейнерам, если достаточно свободного места. В SQL Server 2014 необходимо подготавливать нечетное число контейнеров, чтобы обеспечить равномерное распределение. Начиная с версии SQL Server 2016 равномерное распределение достигается как при нечетном, так и при четном количестве контейнеров.
Шифрование
В SQL Server 2016 (13.x) и более поздних версиях хранилище для оптимизированных для памяти таблиц будет зашифровано как часть включения прозрачное шифрование данных (TDE) в базе данных. Дополнительные сведения см. в статье Прозрачное шифрование данных (TDE). В ФАЙЛАх контрольных точек SQL Server 2014 (12.x) не шифруются, даже если TDE включен в базе данных.
Данные в неустойчивых (SCHEMA_ONLY) таблицах, оптимизированных для памяти, никогда не записываются на диск. Таким образом, TDE не применяется к таким таблицам.
См. также
Создание и управление хранилищем для оптимизированных для памяти объектов