Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 Проблема вставки большого количества строк  [new]
vgpframed
Member

Откуда:
Сообщений: 17
Доброго дня!
Подскажите, пожалуйста, как решить мою проблему..
Есть база данных Postgres, соответственно, в ней есть таблица, на все поля наложен уникальный индекс, и пытаюсь добавить 500000 строк одной транзакцией, но упираюсь в то, что транзакция прерывается(точно не знаю на каком количестве строк) и данные не пишутся дальше, мне предложили вариант: после определенного количества строк делать commit, есть смысл это делать и если да, то как?
3 фев 21, 16:46    [22274121]     Ответить | Цитировать Сообщить модератору
 Re: Проблема вставки большого количества строк  [new]
MikeR.Ru
Member

Откуда:
Сообщений: 112
По замыслу транзакции и надо делать маленькими и быстрыми. Не пытаться вставить все, спросить об этом пользователей и еще кое-что сделать. Если у вас есть данные по кол-ву записей, которые необходимо вставить, пронумеруйте их и разбейте не несколько пакетов. Обрамите в транзакции и будет понимание какой из пакетов отвалился.
3 фев 21, 18:07    [22274219]     Ответить | Цитировать Сообщить модератору
 Re: Проблема вставки большого количества строк  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 4571
vgpframed
Доброго дня!
Подскажите, пожалуйста, как решить мою проблему..
Есть база данных Postgres, соответственно, в ней есть таблица, на все поля наложен уникальный индекс, и пытаюсь добавить 500000 строк одной транзакцией, но упираюсь в то, что транзакция прерывается(точно не знаю на каком количестве строк) и данные не пишутся дальше, мне предложили вариант: после определенного количества строк делать commit, есть смысл это делать и если да, то как?


вообще в нормальной ситуации можно хоть 10 миллиардов строк вставить в одну таблицу одним запросом (делал такое пару раз по рабочей необходимости)... так что проблем нет
и никакой необходимости делать промежуточные коммиты особо нет (ну кроме того чтобы не держать открытую транзакцию сутками).

0.5M строк это вообще ниочем... через copy должно за минуту или меньше заливаться
если оно ломается - надо смотреть по логу базы и логу приложения что там происходит и почему.

ps: я надеюсь вы через COPY эту batch заливку сделали? (впрочем на 500k это особо ни на что не влияет)

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
3 фев 21, 19:18    [22274293]     Ответить | Цитировать Сообщить модератору
 Re: Проблема вставки большого количества строк  [new]
Guzya
Member

Откуда:
Сообщений: 700
Вы говорите, что на все поля наложен уникальный индекс
,может отваливается по нарушению уникальности.
3 фев 21, 21:33    [22274355]     Ответить | Цитировать Сообщить модератору
 Re: Проблема вставки большого количества строк  [new]
DSKalugin
Member

Откуда: Мать городов русских
Сообщений: 379
500тыс - не в объёме дело, это точно. Можно и в одной транзакции.
Причин может быть масса, нет смысла угадывать. Нужно точное сообщение об ошибке (смотрите в логах).
Может банально кончается место на диске и т.д.
4 фев 21, 12:10    [22274590]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить