Задать вопрос
@beduin01

Как устроена обработка больших INSERT запросов?

Есть большой INSERT размером 10MB который по 5 таблицам раскидывает около десяти тысяч значений.

Подозреваю, что выполняется он не мгновенно. Что происходит с PostgreSQL если в момент его вставки прилетает еще несколько запросов?

Есть ли по умолчанию в PostgeSQL какие-то очереди?

Просто периодически мое приложение выполняющее вставку в БД возвращает мне 504 ошибку и очень похоже что случается именно такая ситуация.

Есть какие-то параметры влияющие на это? К примеру количество процессов PostgreSQL, чтобы пока один занят работал второй?
  • Вопрос задан
  • 112 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Яндекс Практикум
    Python-разработчик расширенный
    14 месяцев
    Далее
  • Яндекс Практикум
    Мидл фронтенд-разработчик
    5 месяцев
    Далее
  • Яндекс Практикум
    Мидл Python-разработчик
    6 месяцев
    Далее
  • Skillbox
    Курс Java-разработчик
    4 месяца
    Далее
  • Thinknetica
    Профессиональная разработка на Ruby on Rails
    9 месяцев
    Далее
  • Яндекс Практикум
    Python-разработчик буткемп
    4 месяца
    Далее
  • Нетология
    Python-разработчик: расширенный курс + нейросети
    12 месяцев
    Далее
  • Нетология
    Python-разработчик с нуля
    6 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 1
@galaxy
Подозреваю, что выполняется он не мгновенно. Что происходит с PostgreSQL если в момент его вставки прилетает еще несколько запросов?

Он их выполняет, по возможности параллельно (в PG по умолчанию на каждое соединение создается новый процесс на сервере). Блокировать друг друга они могут, но при определенных условиях. Надо очень сильно постараться, чтобы INSERT вызвал какую-нибудь блокировку.

Просто периодически мое приложение выполняющее вставку в БД возвращает мне 504 ошибку и очень похоже что случается именно такая ситуация.

Скорее всего, вы просто сильно загружаете машину, все начинает тормозить, возрастает потребление памяти, запросы начинают выполняться долго, накапливаются. Почему именно у вас ошибка, смотрите в логах. Может быть, таймауты, может быть, не хватает памяти или исчерпывается лимит соединений.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы