Доступные версии документации

Создание таблицы «в памяти»

Функция

Определение оператора создания таблицы «в памяти».

Примечание

По умолчанию СУБД ЛИНТЕР не предусматривает работу с таблицами «в памяти». Для поддержки этой функциональности необходимо:

  • сконфигурировать СУБД с помощью утилиты gendb (см. документ «СУБД ЛИНТЕР. Создание и конфигурирование базы данных», команды SET IN-MEMORY TABLES, SET IN-MEMORY COLUMNS, SET IN-MEMORY FILES);

  • при каждом запуске ядра СУБД ЛИНТЕР указывать ключ /INMEMPOOL=<размер>, где <размер> задает максимально допустимое количество страниц в пуле страниц ядра СУБД ЛИНТЕР, выделяемых для размещения таблиц «в памяти». Если этот ключ не задан, то использование таблиц «в памяти» запрещено.

  • в случае активной работы с таблицами «в памяти» рекомендуется увеличить размер памяти канала, выполнив команду

    ALTER DATABASE SET CHANNEL MEMORY LIMIT 1048576;
Спецификация
   
<определение таблицы «в памяти»>::=
CREATE [IF NOT EXISTS | OR REPLACE]
TABLE [имя схемы.]имя таблицы(атрибуты таблицы)
IN-MEMORY [[NO] AUTOSAVE] [[NO] AUTOLOAD]
Синтаксические правила
  1. Параметры (<атрибуты таблицы>) аналогичны параметрам создания базовой таблицы (см. конструкцию <создание таблицы>), за исключением атрибутов, информация о которых хранится не только в описании таблицы и ее столбцов, но и в других компонентах БД. Например: значения по умолчанию, диапазоны значений столбцов, правила ограничения целостности (CHECK), внешние ключи, фразовые индексы и т.п.

  2. Для таблиц «в памяти» запрещено создавать триггеры.

  3. Для таблиц «в памяти» запрещено использование ссылочной целостности.

  4. <Имя таблицы> должно быть отлично от имени любой другой таблицы (базовой или «в памяти»), представления и синонима в пределах <имени схемы> или текущей схемы.

    create table in_mem (i int unique) in-memory;
  5. Опция AUTOSAVE задаёт автоматическое сохранение таблицы «в памяти» на диск при завершении работы СУБД. Значение по умолчанию – NO AUTOSAVE.

  6. Опция AUTOLOAD задаёт автоматическое активизирование таблицы «в памяти» при старте СУБД ЛИНТЕР (в противном случае таблица «в памяти» активизируется при первом обращении к ней). Значение по умолчанию – NO AUTOLOAD. Обращение к таблице «в памяти», которая не была активизирована при старте СУБД или командой RESTORE (например, из-за недостаточности ресурсов) вызывает ошибку.

  7. Опция OR REPLACE заставляет удалять существующую в БД таблицу (со всеми её данными) и создавать её под тем же именем, но с указанными параметрами.

  8. Опция IF NOT EXISTS отменяет выполнение оператора, если указанная таблица уже существует в БД.

  9. Одновременное использование опций IF NOT EXISTS и OR REPLACE запрещено.

Общие правила
  1. При старте ядра СУБД выполняется активизация всех таблиц «в памяти», созданных с атрибутом AUTOLOAD.

  2. При останове ядра СУБД выполняется сохранение всех таблиц «в памяти», созданных с атрибутом AUTOSAVE.

Заметили ошибку?
Выделите текст и нажмите Ctrl + Enter