Массовое добавление данных в пустую таблицу
Предварительные условия:
-
таблица должна быть создана согласно пункту «Оптимизация размеров табличных файлов БД»;
-
при создании таблицы не должны быть использованы опции, требующие индексации загружаемых данных (атрибут столбца PRIMARY KEY);
-
загружаемые данные могут индексироваться, но во время загрузки лучше все-таки отменить индексирование с помощью SQL-запроса
DROP INDEX < имя индекса >
, чтобы сократить время загрузки.
Примечание
Перед загрузкой данных рекомендуется создать полный архив БД (для повторной загрузки в случае неуспешной предшествующей загрузки).
Загрузка данных:
-
желательно завершить на компьютере работу всех посторонних программ;
-
запустить ядро СУБД ЛИНТЕР со следующими параметрами:
-
/POOL=N
, где N – максимально возможное в этом сеансе значение (т.е. попытаться размещать добавляемые данные в пуле ядра СУБД в максимально возможном объеме перед сбросом их в файл данных); -
не следует включать какую-либо трассировку выполнения SQL-запросов (по умолчанию трассировка выполнения SQL-запросов отменена) нет необходимости.
-
-
загрузку данных выполнять либо клиентским приложением, либо с помощью утилиты loarel СУБД ЛИНТЕР в транзакционном режиме AUTOCOMMIT. В обоих случаях использовать пакетный режим загрузки данных:
-
клиентское приложение (call-интерфейс): использовать команду PUTM (см. документ «Интерфейс нижнего уровня»);
-
loarel: выполнять загрузку с ключом
–s 2
(см. документ «Импорт данных»); -
proc: использовать команды START APPEND/END APPEND (см. документ «Процедурный язык»).
-
После загрузки данных:
-
создать, при необходимости, индексы.
Если в таблице необходимо создать нескольких индексов, то рекомендуется хранить информацию об индексах в отдельных индексных файлах. Для этого:
-
указать количество индексных файлов (если это не было сделано при создании таблицы):
ALTER TABLE … ADD INDEXFILES < количество файлов >;
-
создать индексы и указать их местоположение в отдельных индексных файлах, начиная со второго (первый индексный файл используется в качестве конвертера):
CREATE INDEX … INDEXFILE 2 [BY APPEND];
Атрибут
BY APPEND
заставляет индексировать данные без предварительной сортировки, что уменьшает размер используемого дискового пространства, но увеличивает время создания индекса;
-
-
создать, при необходимости, условия ограничения целостности:
ALTER TABLE … ADD PRIMARY KEY; ALTER TABLE … ADD UNIQUE … [INDEXFILE < номер файла >] [BY APPEND]; ALTER TABLE … ADD FOREIGN KEY … [INDEXFILE < номер файла >] [BY APPEND];
-
если загрузка данных завершилась некорректно, необходимо выявить и устранить причину, восстановить БД из архива и повторить загрузку данных.