Size: a a a

2020 May 15

AP

Anton Petrusevich in Modern::Perl
Warstone
Есть только асинхронное ожидание начала ответа
да, я понимаю. этого, таки, как правило, хватает
источник

AP

Anton Petrusevich in Modern::Perl
то есть, когда пг стал высылать ответ, то, обычно, он высылает его целиком
источник

W

Warstone in Modern::Perl
Ну вот я, в свое время, хотел добавить асинхронное чтение, но руки не дошли, там надо половину драйвера переписывать
источник

AP

Anton Petrusevich in Modern::Perl
либпкью я смотрел. но это в сторону от моих намерений
источник

W

Warstone in Modern::Perl
Anton Petrusevich
то есть, когда пг стал высылать ответ, то, обычно, он высылает его целиком
Асинхронное чтение позволяет сделать SELECT * FROM <что-то что не влезло в памяти>; и читать из него.
источник

AP

Anton Petrusevich in Modern::Perl
Warstone
Асинхронное чтение позволяет сделать SELECT * FROM <что-то что не влезло в памяти>; и читать из него.
я помню про частичные фетчи, я думал об этом. есть потеря производительности некоторая, и у меня не было объёмов, чтобы это было актуально
источник

W

Warstone in Modern::Perl
На стороне libpq нету, насколько я помню (вернее она минимальна). На стороне Перла - как сделаете. Если будет чанками и переиспользование выделенного массива, то еще и быстрее может быть
источник

AP

Anton Petrusevich in Modern::Perl
тут ведь какое дело. когда результат выборки не влазит в память сервера, то он так же может не влазить и в память клиента. а, значит, надо заранее позаботиться о запросе, чтобы не выбиралось лишнего.
источник

AP

Anton Petrusevich in Modern::Perl
то есть это скорее путь к хранимкам
источник

W

Warstone in Modern::Perl
Блин... Я говорил исключительно про "не влазит в память клиента", конечно-же
источник

W

Warstone in Modern::Perl
На сервер пофик в данном случае, так как данные надо выбрать все (в условной задаче)
источник

W

Warstone in Modern::Perl
Это защита от любителей $schema->resultsource("User")->search->all
источник

W

Warstone in Modern::Perl
Вернее как раз от них она не спасет, конечно-же...
источник

W

Warstone in Modern::Perl
Но спасет если там через next это делать
источник

AP

Anton Petrusevich in Modern::Perl
Warstone
Блин... Я говорил исключительно про "не влазит в память клиента", конечно-же
поскольку я пользуюсь практически исключительно своим же "орм", я думал там сделать обёртку запросов, чтобы делать фетч с сервера кусками по 1000 или типа того, а орм бы сам когда надо подчитывал. т.е. добавить префиксом к запросу
DECLARE csr CURSOR WITH HOLD FOR $sql
и делать
fetch 1000 from csr
пока выбираются строки. эта стратегия вполне возможна к реализации и сейчас. просто посчитал, что нет необходимости (у меня)
источник

W

Warstone in Modern::Perl
.... Вы опять не понимаете о чем я, да?
источник

AP

Anton Petrusevich in Modern::Perl
Warstone
.... Вы опять не понимаете о чем я, да?
тут два параллельных рукава, ты выбираешь какой тебе вдруг больше нравится?
источник

W

Warstone in Modern::Perl
Ну нет, конечно.
источник

W

Warstone in Modern::Perl
Я вам говорю про https://www.postgresql.org/docs/12/libpq-single-row-mode.html

Где не надо трахать мозг с транзакциями и прочим, а вы мне про серверные курсоры.
источник

AP

Anton Petrusevich in Modern::Perl
окей. давай по порядку. в некоторый общий "асинк"-разговор вошла вдруг тема недостатков реализации асинка в дбд-пг. я пытаюсь поддержать, что, как правило, пг присылает запрошенный кусок целиком. уж точно это верно для сингл-роу-режима.
источник