Требуется оптимизация для нескольких вставок в PostgreSQL - PullRequest
0 голосов
/ 03 ноября 2011

У меня в основном 3 таблицы. Один является основной таблицей, а два других зависят от первого. У меня есть требование добавить до 70000 записей во всех таблицах. У меня есть ограничения (первичные и внешние ключи, индекс, уникальные и т. Д.) Для таблиц. Я не могу перейти к массовому импорту (используя команду COPY), поскольку в требовании нет стандартного файла .csv, и отображение явно требуется, плюс несколько проверок внешне применяются в файле программирования на основе C. Детали каждой записи (до 70000) будут передаваться из .pgc (файл программирования C на основе ECPG) в файл postgresql. Это занимает меньше времени для первых нескольких записей, и производительность становится плохой для последних записей! Результат очень печальный, что для покрытия до 20000 дней нужны дни! Какие показатели производительности я мог бы сделать для этого? Пожалуйста, ведите меня.

Схема моей основной таблицы:

CREATE TABLE contacts 
( contact_id SERIAL PRIMARY KEY
, contact_type INTEGER DEFAULT 0
, display_name TEXT NOT NULL DEFAULT ''
, first_name TEXT DEFAULT ''
, last_name TEXT DEFAULT ''
, company_name TEXT DEFAULT ''
, last_updated TIMESTAMP NOT NULL DEFAULT current_timestamp
, UNIQUE(display_name)
) WITHOUT OIDS;

1 Ответ

1 голос
/ 03 ноября 2011

Удаление / отключение индексов / триггеров и использование COPY. Мы используем это для импорта миллионов строк и гигабайт данных в считанные минуты.

Документы подробно описывают это здесь: http://www.postgresql.org/docs/9.1/static/populate.html

Postgres отлично при массовой загрузке данных, если вы делаете это правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...