Почему мои переменные таблицы, оптимизированные для памяти, используют дисковое пространство

Я создал оптимизированный для памяти тип таблицы в моей базе данных следующим образом:

create type tblLocation_InMem as table(
     IndexLocation int not null index IX_LocInMem,
     IndexRootLocation int not null,
     fldLocCrumbs nvarchar(1024) not null
)
with (memory_optimized=on)

Этот тип таблицы должен использоваться в большом запросе, который должен получить доступ к данным, хранящимся в нем, через несколько операторов выбора, например, так:

declare @myLocTbl as tblLocation_InMem;
insert into @myLocTbl <some select statement>;
select <stuff> from <some table> join @myLocTbl on <join stuff>;
select <other stuff> from <other table> join @myLocTbl on <more join stuff>;

Все работает нормально, но я заглянул в свою папку данных SQL для группы файлов File_MemOpt базы данных, и я вижу такие вещи для моего типа таблицы In-Memory в папке $HKv2:

Видимо мой тип таблицы в памяти не совсем в памяти. Есть ли способ, которым я могу использовать этот тип таблицы и хранить его строго в памяти без всей этой записи на диск. Я думал, создавая только табличный тип в памяти, я избегал любой дисковой активности. Я также попытался создать определение таблицы в памяти и указать durability = schema_only, но это все равно создало материал на диске. Должен ли я просто использовать переменные таблицы?

Я не беспокоюсь о сохранении после перезагрузки или чего-то в этом роде. Запрос на выбор происходит в контексте веб-запроса REST. Если сервер перезагружается во время запроса, то запрос должен будет начаться заново.

1 ответ

Оптимизированные для памяти таблицы все еще сохраняются на диске. Если вы действительно хотите таблицу только для памяти без сохранения данных, создайте ее с

(with memory_optimized=on, durability=schema_only)

Прочитайте документацию для получения дополнительной информации:

https://docs.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/introduction-to-memory-optimized-tables

https://docs.microsoft.com/en-us/sql/t-sql/statements/create-table-transact-sql

Другие вопросы по тегам