Size: a a a

2020 December 18

MP

Misha Puzanov in Haskell
ну или всегда можно делать в цикле
select * from .. where id > $alreadyReadToThisPoint limit 1000
и не заморачиваться
источник

MP

Misha Puzanov in Haskell
Alexey Raga
Вообще, может и неплохо, если для streaming есть конкурентный fold...
Не знаете, есть такой? Ну, вот, есть у меня Stream (Of row), есть что-то готовое, чтобы его фолдить обрабатывая строки параллельно в 10 потоках?
не знаю, если честно, у меня какое-то время назад просто залипло в голове, что такое точно есть и может пригодиться, но не пригодилось
источник

AR

Alexey Raga in Haskell
Да ну можно же просто в bounded chan пихать, я думаю.... Фишка в том, где именно лик... Может даже если я так и буду делать, fold этот всё равно что-то будет копить
источник

AR

Alexey Raga in Haskell
Надо поискать, вроде бы на поверхности вещь, должно же что-то быть... :)
Спасибо за идею в любом случае.
источник

MP

Misha Puzanov in Haskell
Alexey Raga
Да ну можно же просто в bounded chan пихать, я думаю.... Фишка в том, где именно лик... Может даже если я так и буду делать, fold этот всё равно что-то будет копить
да, разве что транзакции будут уже новые (не знаю, важно ли это)
источник

AR

Alexey Raga in Haskell
О, есть вот это: https://hackage.haskell.org/package/streaming-concurrency-0.3.1.3/docs/Streaming-Concurrent.html#v:withStreamMapM
Оно, правда, зачем-то ещё и фолдит, ну да ладно :)
источник

R

Roman in Haskell
Alexey Raga
Где-то вот в этом куске кода есть space leak. Не видите навскидку где именно (используется Postgres Simple)
странно. А там точно есть лик? Я когда postgresql-simpl пользовался, у меня такое стримило нормально.
источник

AR

Alexey Raga in Haskell
Roman
странно. А там точно есть лик? Я когда postgresql-simpl пользовался, у меня такое стримило нормально.
Точно или нет, но память оно жрёт сотнями мегабайт.
источник

R

Roman in Haskell
а если сделать handle _ _ = pure ()?
источник

AR

Alexey Raga in Haskell
Очень странно, даже такое вот течёт. Вызываю с f = \_ -> pure ()
источник

AR

Alexey Raga in Haskell
Здесь fromStream конвертирует в Conduit, а lazyConsume консьюмит в Lazy List
источник

AV

Alexander Vershilov in Haskell
Alexey Raga
Где-то вот в этом куске кода есть space leak. Не видите навскидку где именно (используется Postgres Simple)
PostgreSQL-simple уже уточка
источник

AV

Alexander Vershilov in Haskell
Alexey Raga
Проще, но фигово - там миллионы записей
Сделай курсор с батчем по 1к элементов
источник

AV

Alexander Vershilov in Haskell
Alexey Raga
Кстати хорошая идея, сейчас гляну, что там
Во всех почти режим работы переключается на загрузку singeRow который сильно менее эффективный на стороне libpq
источник

AV

Alexander Vershilov in Haskell
Alexey Raga
Вообще, может и неплохо, если для streaming есть конкурентный fold...
Не знаете, есть такой? Ну, вот, есть у меня Stream (Of row), есть что-то готовое, чтобы его фолдить обрабатывая строки параллельно в 10 потоках?
В streamly есть в стриминге не помню готового, но на коленке за 20 строк собрать можно
источник

AV

Alexander Vershilov in Haskell
Misha Puzanov
ну или всегда можно делать в цикле
select * from .. where id > $alreadyReadToThisPoint limit 1000
и не заморачиваться
Вот это вот, только лучше курсором
источник

AV

Alexander Vershilov in Haskell
Alexey Raga
Да ну можно же просто в bounded chan пихать, я думаю.... Фишка в том, где именно лик... Может даже если я так и буду делать, fold этот всё равно что-то будет копить
Libpq выделит память под все данные, потом ещё и p-g-s выделит когда парсить будет
источник

AR

Alexey Raga in Haskell
Alexander Vershilov
Libpq выделит память под все данные, потом ещё и p-g-s выделит когда парсить будет
Ну вот в моём последнем примере я не понимаю всё же почему оно память жрёт. Там внутри и есть курсор.
источник

AR

Alexey Raga in Haskell
Хотя вот может быть это было что-то транзиентное. Как только я подключил реальную логику (а не просто pure () ) оно перестало память жрать как сумасшедшее. Константно 28 мег.
источник

A

Aleksandr Khristenko in Haskell
Kir
Есть препроцессор для RecordDotSyntax
Генерацию аксессоров он не уберет.
источник