Создание таблицы «в памяти»
Функция
Определение оператора создания таблицы «в памяти».
Примечание
По умолчанию СУБД ЛИНТЕР не предусматривает работу с таблицами «в памяти». Для поддержки этой функциональности необходимо:
-
сконфигурировать СУБД с помощью утилиты gendb (см. документ «СУБД ЛИНТЕР. Создание и конфигурирование базы данных», подпункт «Установка параметров конфигурирования», команды SET IN-MEMORY TABLES, SET IN-MEMORY COLUMNS, SET IN-MEMORY FILES);
-
при каждом запуске ядра СУБД ЛИНТЕР указывать ключ
/INMEMPOOL=< размер >
, где< размер >
задает максимально допустимое количество страниц в пуле страниц ядра СУБД ЛИНТЕР, выделяемых для размещения таблиц «в памяти». Если этот ключ не задан, то использование таблиц «в памяти» запрещено. -
в случае активной работы с таблицами «в памяти» рекомендуется увеличить размер памяти канала, выполнив команду
ALTER DATABASE SET CHANNEL MEMORY LIMIT 1048576;
Спецификация
::=
TABLE [имя схемы.]имя таблицы(атрибуты таблицы)
IN-MEMORY [[NO] AUTOSAVE] [[NO] AUTOLOAD]
Синтаксические правила
-
Параметры (
< атрибуты таблицы >
) аналогичны параметрам создания базовой таблицы (см. конструкцию< создание таблицы >
), за исключением атрибутов, информация о которых хранится не только в описании таблицы и ее столбцов, но и в других компонентах БД. Например: значения по умолчанию, диапазоны значений столбцов, правила ограничения целостности (CHECK
), внешние ключи, фразовые индексы и т.п. -
Для таблиц «в памяти» запрещено создавать триггеры.
-
Для таблиц «в памяти» запрещено использование ссылочной целостности.
-
< Имя таблицы >
должно быть отлично от имени любой другой таблицы (базовой или «в памяти»), представления и синонима в пределах < имени схемы > или текущей схемы.create table in_mem (i int unique) in-memory;
-
Опция
AUTOSAVE
задаёт автоматическое сохранение таблицы «в памяти» на диск при завершении работы СУБД. Значение по умолчанию –NO AUTOSAVE
. -
Опция
AUTOLOAD
задаёт автоматическое активизирование таблицы «в памяти» при старте СУБД ЛИНТЕР (в противном случае таблица «в памяти» активизируется при первом обращении к ней). Значение по умолчанию –NO AUTOLOAD
. Обращение к таблице «в памяти», которая не была активизирована при старте СУБД или командойRESTORE
(например, из-за недостаточности ресурсов) вызывает ошибку. -
Опция
OR REPLACE
заставляет удалять существующую в БД таблицу (со всеми её данными) и создавать её под тем же именем, но с указанными параметрами. -
Опция
IF NOT EXISTS
отменяет выполнение оператора, если указанная таблица уже существует в БД. -
Одновременное использование опций
IF NOT EXISTS
иOR REPLACE
запрещено.
Общие правила
-
При старте ядра СУБД выполняется активизация всех таблиц «в памяти», созданных с атрибутом
AUTOLOAD
. -
При останове ядра СУБД выполняется сохранение всех таблиц «в памяти», созданных с атрибутом
AUTOSAVE
.