Создание таблицы «в памяти» (CREATE TABLE IN-MEMORY)
Функция
Определение оператора создания таблицы «в памяти».
Примечание
По умолчанию СУБД ЛИНТЕР не предусматривает работу с таблицами «в памяти». Для поддержки этой функциональности необходимо:
-
сконфигурировать СУБД с помощью утилиты 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.