Size: a a a

pgsql – PostgreSQL

2020 June 26

М

Максим in pgsql – PostgreSQL
Есть массив объектов, я циклом беру элемент - запихиваю его в БД и перехожу к следующему
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим
Народ, обарбатываю большой массив данных, пуляю по 1му в БД
Каждую секунду импортируется 5 записей.
Этот лимит как-то можно увеличить?
Ну так "запихивайте" побыстрее. ;)
В самом деле, непонятно, в чём у Вас проблема.
источник

N

Nikolay in pgsql – PostgreSQL
Максим
Народ, обарбатываю большой массив данных, пуляю по 1му в БД
Каждую секунду импортируется 5 записей.
Этот лимит как-то можно увеличить?
5 записей это очень мало. какого они размера?
источник

MM

Max Mokryi in pgsql – PostgreSQL
Максим
Есть массив объектов, я циклом беру элемент - запихиваю его в БД и перехожу к следующему
размер объекта неизвестен.... поэтому тяжело что-то сказать.... Используется ORM или обычный plain sql insert? Если последнее, то можно
INSERT INTO films (code, title, did, date_prod, kind) VALUES
   ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy'),
   ('HG120', 'The Dinner Game', 140, DEFAULT, 'Comedy');
источник

MM

Max Mokryi in pgsql – PostgreSQL
Собрали один insert и запулили его в базу....
источник

MM

Max Mokryi in pgsql – PostgreSQL
Если делать commit после каждого добавления - это тоже тормозит.... Вопрос задан крайне мутно
источник

М

Максим in pgsql – PostgreSQL
У меня схема немного криворукая
источник

М

Максим in pgsql – PostgreSQL
Делаю строку INSERT INTO films (code, title, did, date_prod, kind) VALUES
   ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy')
открываю коннект
пихаю
закрываю

Делаю новую строку
источник

N

Nikolay in pgsql – PostgreSQL
а почему bind переменные не используете?
источник

М

Максим in pgsql – PostgreSQL
в исходном массиве 10к объектов, часть под обновление записи, часть под добавление
В приложении я планирую проверить «надо ли обновлять» чтобы не пихать постоянно «n conflict do updatset»
источник

М

Максим in pgsql – PostgreSQL
Nikolay
а почему bind переменные не используете?
Э?
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим
Делаю строку INSERT INTO films (code, title, did, date_prod, kind) VALUES
   ('B6717', 'Tampopo', 110, '1985-02-10', 'Comedy')
открываю коннект
пихаю
закрываю

Делаю новую строку
открываю коннект
пихаю
закрываю

Зачем?! Соединения-то устанавливаются очень долго (по сравнению с типичным временем INSERT).
источник

М

Максим in pgsql – PostgreSQL
Yaroslav Schekin
открываю коннект
пихаю
закрываю

Зачем?! Соединения-то устанавливаются очень долго (по сравнению с типичным временем INSERT).
да, наверно в этом и есть основная проблема
буду наверно напихивать по 100 записей
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Да, почему? Вам SQL injections в жизни не хватает? ;)
Параметризованные запросы нужно использовать.
источник

N

Nikolay in pgsql – PostgreSQL
так вам еще лучще использовать байн переменные. это и нагрузка на сервер меньше будет. он не будет каждый запрос парсить по новому
источник

М

Максим in pgsql – PostgreSQL
Это через библиотеки всякие? У меня приложение стандартное с обычным pg_query (php)
источник

s

sexst in pgsql – PostgreSQL
Максим
да, наверно в этом и есть основная проблема
буду наверно напихивать по 100 записей
Открываете
Опционально делаете prepared statement (многие коннекторы под капотом и так делают, поэтому опционально и зависит от языка)
Пихаете пачками по 100-200-300 штук в одном инсерте, опционально можно каждый такой инсерт коммитить
Коммит
Закрываете коннект
источник

YS

Yaroslav Schekin in pgsql – PostgreSQL
Максим
Это через библиотеки всякие? У меня приложение стандартное с обычным pg_query (php)
Там нужно не переподключаться по мере возможности, вот и всё.
А если какой-то интерфейс работы с PostgreSQL в 2020 не умеет в параметризацию (хотя бы со стороны клиента, но куда лучше — настоящую, на уровне протокола), место ему в мусорном ведре. ;)
источник

М

Максим in pgsql – PostgreSQL
Спасибо, порылся, нашел функцию для вставки ассоциативного массива
источник

М

Максим in pgsql – PostgreSQL
теперь смогу собирать массив по 100-200шт и отправлять его в базу
источник