|
Проблема вставки большого количества строк
|
|||
---|---|---|---|
#18+
Доброго дня! Подскажите, пожалуйста, как решить мою проблему.. Есть база данных Postgres, соответственно, в ней есть таблица, на все поля наложен уникальный индекс, и пытаюсь добавить 500000 строк одной транзакцией, но упираюсь в то, что транзакция прерывается(точно не знаю на каком количестве строк) и данные не пишутся дальше, мне предложили вариант: после определенного количества строк делать commit, есть смысл это делать и если да, то как? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 16:46 |
|
Проблема вставки большого количества строк
|
|||
---|---|---|---|
#18+
По замыслу транзакции и надо делать маленькими и быстрыми. Не пытаться вставить все, спросить об этом пользователей и еще кое-что сделать. Если у вас есть данные по кол-ву записей, которые необходимо вставить, пронумеруйте их и разбейте не несколько пакетов. Обрамите в транзакции и будет понимание какой из пакетов отвалился. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 18:07 |
|
Проблема вставки большого количества строк
|
|||
---|---|---|---|
#18+
vgpframed Доброго дня! Подскажите, пожалуйста, как решить мою проблему.. Есть база данных Postgres, соответственно, в ней есть таблица, на все поля наложен уникальный индекс, и пытаюсь добавить 500000 строк одной транзакцией, но упираюсь в то, что транзакция прерывается(точно не знаю на каком количестве строк) и данные не пишутся дальше, мне предложили вариант: после определенного количества строк делать commit, есть смысл это делать и если да, то как? вообще в нормальной ситуации можно хоть 10 миллиардов строк вставить в одну таблицу одним запросом (делал такое пару раз по рабочей необходимости)... так что проблем нет и никакой необходимости делать промежуточные коммиты особо нет (ну кроме того чтобы не держать открытую транзакцию сутками). 0.5M строк это вообще ниочем... через copy должно за минуту или меньше заливаться если оно ломается - надо смотреть по логу базы и логу приложения что там происходит и почему. ps: я надеюсь вы через COPY эту batch заливку сделали? (впрочем на 500k это особо ни на что не влияет) -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 19:18 |
|
Проблема вставки большого количества строк
|
|||
---|---|---|---|
#18+
Вы говорите, что на все поля наложен уникальный индекс ,может отваливается по нарушению уникальности. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 21:33 |
|
Проблема вставки большого количества строк
|
|||
---|---|---|---|
#18+
500тыс - не в объёме дело, это точно. Можно и в одной транзакции. Причин может быть масса, нет смысла угадывать. Нужно точное сообщение об ошибке (смотрите в логах). Может банально кончается место на диске и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 12:10 |
|
|
start [/forum/topic.php?fid=53&fpage=16&tid=1994213]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 132ms |
0 / 0 |