Постоянные коннекты к БД и мультипоточность

zuxel

Новичок
Ну так может просветишь? Или зачем это сюда писать, ты самоутверждаешься?
 

AnrDaemon

Продвинутый новичок
Может, ты уже закончишь писать, и начнёшь читать? Документацию, учебники… или хотя бы то, что сам пишешь. Так, чисто поржать.
Мы ведь тут тоже не родились всезнающими. Тоже учились.

Беря конкретно в пример твой последний вброс:
Да, я знаю. А ты знаешь как сделать, чтобы в одном запросе выбрать строки, потом в php их обработать и записать результат, и все это в рамках одного _не_постоянного_ соединения?
Покажи мне, где в твоём предложении происходит разрыв твоего _не_постоянного соединения?
 

Тугай

Новичок
Статья - http://dklab.ru/chicken/nablas/53.html
Обсуждение статьи на форуме - http://forum.dklab.ru/viewtopic.php?t=32211

Как раз из-за проблемы с LIMIT'ом, постоянное соединение и может приводить к лишним блокировкам и всяким неприятным багам,
поэтому важен правильный индекс и нужно смотреть на план запроса.

Как уже сказал MiksIr постоянное соединение не обязательно, а судя по тому, как это пробывали на практике еще и не нужно.

Котеров сам советует 10-20 процессов и столько же соединений, они могут и на разных компах выполнятся.

zuxel, перечитай внимательней доку по pg_try_advisory_lock, ты не правильно понимаешь работу этой функции.
 

zuxel

Новичок
Действительно получилось сделать без постоянного соединения, правда соединения все равно иногда падают, но, возможно, дело в дефолтной инсталяции постгреса, которую я поставил на виртуалку
 

полудух

Итсист
Чтобы не падали, есть pg_ping
А у постоянных соединений минусов больше, чем плюсов.
Фактически, постоянные соединения не предоставляют никакой функциональности, которая была бы невозможна в непостоянных аналогичных соединениях.
Они типа экономят ресурсы, но этого можно и через мемкэшед добиться, например, причём с ещё бОльшей экономией.
Главный недостаток в том, что перед повторным использованием их состояние не сбрасывается к изначальному. Например, открытые и незавершенные транзакции не будут автоматически откатываться. Также, если во время нахождения соединения в пуле для процесса изменились какие-либо разрешения или уровни доступа, этот факт никак не отразится на подключении при его извлечении из пула.
Тут подробнее
 

AnrDaemon

Продвинутый новичок
А ещё более смешных результатов с использованием постоянных соединений можно добиться, сменив в одном из запросов кодировку подключения/запросов/результатов…
 
Сверху