Почему тебе нужен PgBouncer, как его установить? Оптимизируем веб-приложения с PostgreSQL

  Рет қаралды 42,263

Диджитализируй!

Диджитализируй!

Күн бұрын

Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
Сказать спасибо за это видео можно здесь - boosty.to/digitalize.team
PgBouncer - пулер соединений к PostgreSQL. Поговорим о том, что это, зачем нужно и почему делать приложения на Python без него так грустно, а затем установим и настроим PgBouncer.
Команда из видео:
echo "md5"$(echo -n 'PasswordUser' | md5sum | awk '{print $1}')
0:00 Как работает PostgreSQL?
1:37 В чём проблема?
3:53 Что с этим делать?
4:58 Как нам поможет PgBouncer?
7:19 Установка и настройка PgBouncer
11:14 Доработка приложения для PgBouncer
11:49 Выводы
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Если у вас есть проект на разработку, пишите нам на hi@digitalize.team.
С другими предложениями, а также если вам нужна одна или несколько индивидуальных консультаций/уроков по разработке (3000 руб/час), пишите мне на alexey@salesbeat.pro.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 240
@barsukov_vv
@barsukov_vv 3 жыл бұрын
ну про. плюсы рассказал, добавлю немного: 1. забыл упамянуть, что если юзать транзаакшин мод, то забудьте про препаред-стейтстмент, 2. дебажить запросы почти не реально, тяжело сматчить с pg_stat_activity 3. баунсер не решает проблем плохих запросов, если запрос ставит шаред-лок на таблицу, то хоть 2000 конеекшинов ставь ничего не поможет 4. есть прикольная альтернатива от Яндекса, одисей. в инете есть доклад какую проблему не смог решить баунсер и почему пришлось писать свой 5. с 11 версии постгрес спокойно держит 2000 соединений, но небольшая деградация происходит уже где то на 1000
@jandublianski744
@jandublianski744 3 жыл бұрын
"1. забыл упамянуть, что если юзать транзаакшин мод, то забудьте про препаред-стейтстмент" - спасибо! pool_mode = session работает так как надо
@barsukov_vv
@barsukov_vv 3 жыл бұрын
@@mythbuster6126 интересная логика, random_page_cost так же равен 4, и что это могло значить?
@mihax56
@mihax56 3 жыл бұрын
@@mythbuster6126 дефолтные настройки ПГ выбраны таким образом, чтоб он на чайнике запускался - не надо их брать за эталон.
@sergeysemibratov509
@sergeysemibratov509 2 ай бұрын
Since version 1.21.0 PgBouncer can track prepared statements in transaction pooling mode
@andreym2502
@andreym2502 3 жыл бұрын
Хотелось бы ещё тест нагрузочный посмотреть , как это работает :)
@DejaVooDM
@DejaVooDM 3 жыл бұрын
Спасибо за ваш труд, очень полезный контент. Жду информацию про курс
@vadimdorokhov8375
@vadimdorokhov8375 3 жыл бұрын
Класс👍. Побольше бы такого раскрытия нюансов и тонких мест web-приложений на python!
@maxymvelushchac3150
@maxymvelushchac3150 3 жыл бұрын
Один из самых содержательных капалов по питону. Спасибо! Очень классно!
@Oleksii_Leshchenko
@Oleksii_Leshchenko 3 жыл бұрын
Пошел применять) Спасибо
@troyhunter3586
@troyhunter3586 3 жыл бұрын
Хм, классная штука, не знал, благодарю тебя!
@wollenszeit131
@wollenszeit131 2 жыл бұрын
Очень полезное видео! Спасибо за твой контент🏆
@alexsukhykh5666
@alexsukhykh5666 3 жыл бұрын
Спасибо! Не знал. Возьму в работу
@user-ey8lc3vz7n
@user-ey8lc3vz7n 3 жыл бұрын
Можно как нибудь рассказать про SQLAlchemy?
@PaiNtRuTube
@PaiNtRuTube 3 жыл бұрын
В алхимии из коробки более кастомизируемы параметры соединения, и кроме того есть такое понятие как "пул соединений"
@sw1881
@sw1881 3 жыл бұрын
Спасибо за контент!
@MrDimka12101
@MrDimka12101 3 жыл бұрын
Очень полезная информация. В ближайшее время настрою это на сервере!
@user-hs7jm3nc2e
@user-hs7jm3nc2e 3 жыл бұрын
О! Спасибо снова что-то новенькое узнал!
@evlazarev
@evlazarev 3 жыл бұрын
Полезно. Доступно. Спасибо.
@Smarandii
@Smarandii 3 жыл бұрын
Очень хочется больше видео!
@alexandrvoloshyn8225
@alexandrvoloshyn8225 3 жыл бұрын
Спасибо за видео!
@MS-fu3zf
@MS-fu3zf 3 жыл бұрын
Большое спасибо. Буду теперь юзать новый инструмент.
@t0digital
@t0digital 3 жыл бұрын
Рад, что полезно!
@user-so1rr2is7b
@user-so1rr2is7b 3 жыл бұрын
Спасибо! только лайк! оч полезная инфа
@user-vn2wr9du9i
@user-vn2wr9du9i 3 жыл бұрын
Блин, как я без этого раньше работал?) Большое спасибо
@pontiuspilatus8475
@pontiuspilatus8475 3 жыл бұрын
Спасибо большое, нужно больше видео о подобных утилитах!
@t0digital
@t0digital 3 жыл бұрын
Будут:)
@Svetoz
@Svetoz 3 жыл бұрын
Огонь! Спасибо!
@robin4183
@robin4183 3 жыл бұрын
Отлично! Подобное видео про WSGI и gunicorn будет?
@FillerWorld
@FillerWorld 3 жыл бұрын
Код в видео выглядит очень стильно без фона. Как всегда интересно!
@t0digital
@t0digital 3 жыл бұрын
Спасибо!
@RastegaevDienis
@RastegaevDienis 3 жыл бұрын
В MySQL Connection Pooling - это native штука. Спасибо что рассказал что со слоном тоже есть хороший тул! Респект!
@Mwmwjwjjdjdjdjwmwmkjaj
@Mwmwjwjjdjdjdjwmwmkjaj 5 ай бұрын
Video uchun rahmat. Foydali ma'lumot bo'ldi! Nasib bo'lsa, Pgbouncerni proyektimizda qo'llab ko'ramiz.
@aibarbekkozhayev2047
@aibarbekkozhayev2047 3 жыл бұрын
Спасибо большое, надеюсь на канале скоро будет 1млн)
@t0digital
@t0digital 3 жыл бұрын
Идём к этому:)
@alfarlatypov
@alfarlatypov 3 жыл бұрын
Годно, очень годно! Спасибо большое! Я помню у нас его ставили для того, чтобы он закрывал коннекты которые простаивали в ожидании! И я о нем только слышал, а теперь все понятно объяснили 👍 лайк однозначно!
@t0digital
@t0digital 3 жыл бұрын
Спасибо! 💪
@andreyduke_kz2638
@andreyduke_kz2638 3 жыл бұрын
Интересный обзор 👍
@andreychernykh256
@andreychernykh256 3 жыл бұрын
спасибо! как всегда годнота!!!!
@user-oi1zl6de8i
@user-oi1zl6de8i 3 жыл бұрын
Спасибо, отлично объясняете!
@t0digital
@t0digital 3 жыл бұрын
Спасибо!
@user-lz3ez3nn4j
@user-lz3ez3nn4j 3 жыл бұрын
Спасибо за видео
@Igor-if7sx
@Igor-if7sx 3 жыл бұрын
Дружищеееее! Спасибо!)
@ilyazvorygin7284
@ilyazvorygin7284 Жыл бұрын
кайф, пасиб, помогло видео!
@vladimir_v_it
@vladimir_v_it 4 ай бұрын
Классно, понятно рассказал!
@user-sf9nn6dh2q
@user-sf9nn6dh2q 3 жыл бұрын
круто) спасибо
@user-mt7ko5hx7n
@user-mt7ko5hx7n 3 жыл бұрын
Спасибо. Спас.
@illiadenysenko7776
@illiadenysenko7776 3 жыл бұрын
Кстати вместо `sudo vim` можно использовать `sudoedit`, чтобы не менять пользователя и использовать свой конфиг) Только EDITOR=vim поставить.
@user-uv2rn5qx8o
@user-uv2rn5qx8o 3 жыл бұрын
Используем Patroni для кластеризации PostgreSQL, там как раз pg_bouncer + consul или etcd можно
@belikk1986
@belikk1986 Жыл бұрын
Спасибо за видео! Обратите внимание на то, что по умолчанию ротации логов нет.
@leonidpodriz4940
@leonidpodriz4940 3 жыл бұрын
Спасибо за информацию! 7:41 - уже давно используют apt вместо apt-get.
@t0digital
@t0digital 3 жыл бұрын
Мышечная память, иногда apt пишу, иногда apt-get по-старинке
@user-vd8pz6yk3p
@user-vd8pz6yk3p 3 жыл бұрын
Спасибо! Хороший урок. А можно ли разбить базу pgsql на несколько серверов? Как это сделать? оч интересно)
@hsbsllc8282
@hsbsllc8282 3 жыл бұрын
Очень полезно 👍
@t0digital
@t0digital 3 жыл бұрын
Йеее!
@user-dy5wn7sf6v
@user-dy5wn7sf6v Жыл бұрын
Спасибо! Благодаря Вашим видео, деплой сервера обошелся в разы быстрее. Да и вообще случился🙃
@veraburak8049
@veraburak8049 11 ай бұрын
лайк, подписываюсь
@Kukharev1
@Kukharev1 3 жыл бұрын
шикарный монтаж!
@t0digital
@t0digital 3 жыл бұрын
спасибо!
@user-gx6jl6bt4h
@user-gx6jl6bt4h 3 жыл бұрын
Привет, Алексей! Вопрос об образовательной программе: в этом первом модуле запланирована ли какая-то обратная связь, д/з и т. п. Или это будут просто видео уроки? Спасибо за контент, нравится)
@t0digital
@t0digital 3 жыл бұрын
Привет! Первый модуль будет по фундаменту - как работает инет, как строятся веб приложения, из каких кирпичиков состоят, некоторая практика будет, но это не модуль по программированию, поэтому проверки дз на этом модуле не будет. Коммуникация будет обязательно, будут стрим 1 или 2 раза в неделю, где можно будет позадавать вопросы и получить ответы
@user-gx6jl6bt4h
@user-gx6jl6bt4h 3 жыл бұрын
Спасибо.
@alexanovoable
@alexanovoable 3 жыл бұрын
Отличное видео, как всегда. Книжка кстати, тоже отличная - это Бретт Слаткин, видимо третья редакция Effective Python (на русском бумажная только второй редакции доступна, но я все равно купил) - читается очень легко и имеет малый объем каждого совета. Не так пугает, как Бизлевская Книга рецептов к Пайтону.
@t0digital
@t0digital 3 жыл бұрын
Да, книжка отличная!
@AlexanderDev
@AlexanderDev Жыл бұрын
Спасибо за видео! Если есть возможность, сними, пожалуйста, видео про создание и настройку кластера PostgreSQL с демонстрацией того как туда добавлять новые сервера и удалять вышедшие из строя (всякое же бывает) и чтоб при этом все данные оставались целыми. Если данных надо сохранять очень много, то хотелось бы иметь возможность простым добавлением ещё одного сервера (или пары - для репликации), добавлять физическое место для новых данных. Такое возможно?
@vadskytech2751
@vadskytech2751 3 жыл бұрын
Зачёт!
@Recoshett
@Recoshett 3 жыл бұрын
Приветствую! Спасибо за видео! На древнем php можно применить) а расскажи про SQL alchemy, там пуллер есть из коробки) А ещё интересно про зоопарк от апача узнать. Hbase, hdfs, zookeeper и т. д. Только не из докера, а как standalone решения ☺️
@arkadybagdasarov7306
@arkadybagdasarov7306 Жыл бұрын
в sqlalchemy есть свой коннекшен пул, да, вот только если ты горизонтально увеличишь кол-во приложений - пулы в сумме выжрут весь постгрес лимит
@yuliyabuynovsky1124
@yuliyabuynovsky1124 3 жыл бұрын
СПАСИБО !!! Ты спас нас. Благодаря этому видео мы снизили нагрузку CPU и сайт "задышал". Postgres нагружал сервер до вечных около 100% (сайт стопорился в ЧНН), теперь около 50% в ЧНН !!!! Спасибо за годный контент.
@t0digital
@t0digital 3 жыл бұрын
Йее! Это хороший результат 💪
@anti1am3r
@anti1am3r 3 жыл бұрын
@@t0digital для проекта у которого нет ни архитектора, ни DBA, ни разработчиков, видимо.
@user-no4jf5uj9q
@user-no4jf5uj9q 3 жыл бұрын
Что за сайт ? Расскажи подробнее, сколько запросов генерил сайт на каждого юзера ? Может не правильно постгрес настроен ?
@rumartru
@rumartru 3 жыл бұрын
Спасибо! Эх жалко подробнее не раскрыли проблемы CONN_MAX_AGE в django. Пошел искать....
@user-lg6dt3jf1j
@user-lg6dt3jf1j 3 жыл бұрын
Спасибо за видео, Алексей! Скажи, а для асинхронных фреймворков pgbouncer актуален? Там и соединение к БД, как правило, тоже асинхронное
@m0rtym0rty7
@m0rtym0rty7 3 жыл бұрын
Возник такой же вопрос.
@dimak4528
@dimak4528 3 жыл бұрын
Тоже возник этот вопрос
@t0digital
@t0digital 3 жыл бұрын
Вопрос не в синхронности или асинхронности запросов, вопрос, умеет ли библиотека доступа к БД делать свой пул. Asyncpg умеет. Если app сервер один и БД сервер один, то в таком случае такого встроенного пулера будет достаточно, если серверов больше, отдельный пулер понадобится
@user-lg6dt3jf1j
@user-lg6dt3jf1j 3 жыл бұрын
@@t0digital Спасибо!
@danquimby8317
@danquimby8317 3 жыл бұрын
думаю для асинхронных не страшно он просто будет ждать освобождения
@serhii.chumachenko
@serhii.chumachenko 3 жыл бұрын
спасибо
@rinaatt
@rinaatt 3 жыл бұрын
Спасибо за подробное и одновременно простое объяснение. Возник вопрос, есть ли инструмен для PostgreSQL, который позволит работать с двумя инстансами БД? Одна будет мастер, другая реплика. В мастер БД будет всегда запись, а чтение либо с мастера либо с реплики. При этом джанга будет работать с БД через эту "прокси" как с одной БД. Я решал такую задачу, через написание своего роутера, но это гемморойное и довольное глючное решение.
@dann1kid
@dann1kid 2 жыл бұрын
Ну просто пишешь два коннектора, затем например через peewee ты передаешь коннектор в конструктор в разных ситуациях (при чтении или при записи) и вот тебе пожалуйста. Хоть 10 инстансов, просто коннекторов больше используй
@user-rs5zq9hy4m
@user-rs5zq9hy4m 3 жыл бұрын
Спасибо! Полезно, пошел применять к проекту)) То есть стоит применять примерно при от 100 одновременных запросах к бд? На счет настройки порта 6432, где его изменять в настройках джанго settings.py: DATABASE['PORT': '6432'] (по умолчанию там пусто)? И это все изменения, дальше в проекте ничего не изменять? Как дела с курсом?
@sultanbekbeksultanov4214
@sultanbekbeksultanov4214 3 жыл бұрын
даа, всё верно в settings.py надо поставить PORT:5432 , да его, но по умолчанию у PSQL стоит порт 5432. Если вы поставите новое значение, то оно поменяется
@user-rs5zq9hy4m
@user-rs5zq9hy4m 3 жыл бұрын
@@sultanbekbeksultanov4214 спасибо, друг) я так понял опечатка, в первом случае 6432)
@kalik54
@kalik54 3 жыл бұрын
Спасибо за видео! Хотел бы узнать, можешь посоветовать что-либо, для улучшения своих навыков в продумывании архитектуры проектов? То есть, как строить именно грамотную гибкую систему (бэкенд). Если это важно, то юзаю джанго. Есть ли что-то такое, например, просмотр какого то сорта видео, иные ресурсы или это только с практикой набивается?
@t0digital
@t0digital 3 жыл бұрын
Посоветовать сложно, но я подумаю. Практика это безусловно. Чтение чужого хорошего кода, кстати, очень поможет в этом. Так же как и работа с чужим плохим кодом впрочем. Хорошая архитектура она ведь для того, чтобы всем было удобно с ней работать, поддерживать, дорабатывать и тд, и чтение чужого кода это как раз то, что нужно для развития этого навыка написания красивого архитектурно выстроенного кода
@kalik54
@kalik54 3 жыл бұрын
@@t0digital Большое спасибо, лучше попробовать разобрать такие проекты как фласк или что то явно меньше?
@t0digital
@t0digital 3 жыл бұрын
@@kalik54 можно больше, можно меньше, там везде есть чему поучиться
@kalik54
@kalik54 3 жыл бұрын
@@t0digital Хорошо, снова большое спасибо)
@arnowt
@arnowt 3 жыл бұрын
1. Слышал что есть какие-то с асинхронным скриптами в частности aiopg. Можете рассказать про этот момент. 2. Почему бы не поменять порт ПГ, а ПБ повесить на освободившися порт 5432, чтобы не менять никаких настроек в приложении?
@MrOnlineCoder
@MrOnlineCoder 3 жыл бұрын
А есть ли объяснение почему джанго так "неэффективно" ведет себя из коробки, что приходится юзать дополнительные штуки по типу баунсера? Ведь он же мог сам делать пул соединений
@slogic10
@slogic10 11 ай бұрын
Аналогичная мысль сходу.
@alexanderraf5553
@alexanderraf5553 3 жыл бұрын
А вот с др. Реляционками, например mssql или mysql как обстоит дело?
@artemusenko3546
@artemusenko3546 11 ай бұрын
Спасибо за видос) Такой вопрос. Получается PgBouncer можно доустановить прямо в Docker контейнер с Postgres и Postgres будет работать через PgBouncer?
@t0digital
@t0digital 11 ай бұрын
На проде базу в докер не стоит ставить
@nikolaysokolov9027
@nikolaysokolov9027 3 жыл бұрын
Не знал, что для Пайтона стандарт - Постгрес. Спасибо!
@nikolaysokolov9027
@nikolaysokolov9027 3 жыл бұрын
@@user-ey7rd9ih4g я про MySQL или Марию DB думал. =)
@user-cs6sc5tj1y
@user-cs6sc5tj1y 3 жыл бұрын
Ну Пост сейчас стал шире применяться везде так что вполне себе можно принять такой вариант.
@kalik54
@kalik54 3 жыл бұрын
Очень хотелось бы видеть видео про тесты в пайтоне, стоит ли ждать?)
@t0digital
@t0digital 3 жыл бұрын
Да
@RusFarFaz
@RusFarFaz 3 жыл бұрын
подскажите, на чем лучше создавать сайт онлайн школы с видеоуроками, на чем строить? Django, Django-cms или может что-то еще?
@t0digital
@t0digital 3 жыл бұрын
Да пофик. На чем нравится, что знаете :)
@user-rg4fs5ys5w
@user-rg4fs5ys5w 3 жыл бұрын
Будет ли какой-нибудь ролик связанный с бд Oracle? Например чем он хуже/лучше постгрес, какие-нибудь удобные фишки в нем, которых нет в постгрес. Было бы интересно послушать!
@t0digital
@t0digital 3 жыл бұрын
Давно не работал с Oracle. Вспоминаю с теплом его, и как субд и как компанию)
@user-rg4fs5ys5w
@user-rg4fs5ys5w 3 жыл бұрын
@@t0digital Понял, спасибо большое за ответ!
@ssn1975
@ssn1975 3 жыл бұрын
Теперь осталось рассказать как с pgpool работать :)
@sulfur32066
@sulfur32066 3 жыл бұрын
Можешь в одном из своих видео рассказать как правильно настроить storage и пользоваться им, спасибо тебе)
@doomymax577
@doomymax577 3 жыл бұрын
Что такое сторадж в вашем понимании?
@sulfur32066
@sulfur32066 3 жыл бұрын
@@doomymax577 ну скажем у меня что-то крутиться на сервере heroku, который файлы не хранит, и нужен сторонний storage
@doomymax577
@doomymax577 3 жыл бұрын
@@sulfur32066 на хероку есть доп услуги какие-то по подключению базюки или кэша, посмотри я думаю там такое есть
@sulfur32066
@sulfur32066 3 жыл бұрын
@@doomymax577 PostgresSQL можно подключить, но на счёт остального пока не в курсе
@olegpivovarov9002
@olegpivovarov9002 3 жыл бұрын
Привет! Можешь сделать ролик о создании собственных пакетов и импорте их через pip из локального хранилища? Интересует самый простой малозатратный способ. Вчера поставил Gogs сервер, который не хотел запускаться на винде. Пришлось городить виртуальную машину с убунтой. Как-то всё слишком громоздко получается, хотя казалось бы надо просто подключить модуль.
@nikolaimaslov9432
@nikolaimaslov9432 3 жыл бұрын
Привет! Когда выйдет обучающая программа?
@t0digital
@t0digital 3 жыл бұрын
Привет! В августе уже не успеваю смонтировать материалы, выйдет в начале сентября
@user-dy2ei6hl5q
@user-dy2ei6hl5q 3 жыл бұрын
Подскажите пожалуйста когда информация про курс будет?! С работы ушел , хочу к вам попасть!!! Залайкайте ПОЖАЛУЙСТА!
@t0digital
@t0digital 3 жыл бұрын
В начале сент выходит первый модуль
@user-dy2ei6hl5q
@user-dy2ei6hl5q 3 жыл бұрын
@@t0digital Хотелось бы узнать подробнее, сколько модулей будет, сколько они ориентировочно будут длиться, не будет ли задержек с выходом следующих модулей, средняя цена модуля,это нужно для того чтобы спланировать полугодие по времени ( не суваться в другие курсы, если заминок не будет) и конечно спланировать финансы...Уверен вы скоро всё это осветите))
@glebrusinovich5239
@glebrusinovich5239 3 жыл бұрын
Super
@namalnikmisartenko8785
@namalnikmisartenko8785 3 жыл бұрын
Прикольная штука! Если что еще крутое заметишь или увидишь Обязательно записывай видос! Мы оценим!) Спасибо!)
@Dmitry_Ovchinnikov
@Dmitry_Ovchinnikov 3 жыл бұрын
не понятно, можно ли оставить доступ по ролям, и будет-ли вообще работать правила в pg_hba?
@user-zc3zk8wd8p
@user-zc3zk8wd8p 3 жыл бұрын
ну ок, я смотрел внимательно и... остался один вопрос - вот мы все это взлетели. Реальных коннектов допустим 100. А в джанге то сколько ставить MAX_CONN_AGE ? есть какие то ориентиры?
@user-ff5nt6pn1v
@user-ff5nt6pn1v 3 жыл бұрын
Круто я и не знал что PostgreSQL такое есть.
@t0digital
@t0digital 3 жыл бұрын
Ни дня без новых знаний:)
@nikolayfofilov8834
@nikolayfofilov8834 Жыл бұрын
По поводу паролей, можно просто взять хэш из таблицы pg_shadow
@user-hi9lb2wr2v
@user-hi9lb2wr2v 3 жыл бұрын
Привет, можешь сказать, пожалуйста, как опытный питонист, можно ли на питоне, на джанге создавать большие Энтерпрайз проекты, более-менее высокогогруженные, например как маркет озона? До этого писал на php symfony, там можно такие проекты создавать, а джанга я слышал очень плохо масштабируется, было бы интересно узнать что скажет опытный питонист?
@t0digital
@t0digital 3 жыл бұрын
Привет, питон это же не только джанга. Сама джанга не лидирует в производительности среди питон фреймворков, да, но не всегда производительность работы софта является приоритетом, чаще приоритет в скорости разработки софта. Узкие горлышки можно потом переписать на асинхронных фреймворках или вообще не на питоне.
@alexandrvoloshyn8225
@alexandrvoloshyn8225 3 жыл бұрын
Можно ли сравнить PostgreSQL + pgBouncer с Percona server. Использовали ли Вы Percona server в проектах?
@t0digital
@t0digital 3 жыл бұрын
перкону не использовал, ничего не могу про неё сказать
@rbogdan8980
@rbogdan8980 3 жыл бұрын
Подскажите, а нужен PgBouncer для .NET Core приложений, в которых используются Entity Framework (Npgsql) ? Не могу найти нигде адекватную информацию по такому моему. Или это актуально только для Python и PHP ? Спасибо!
@t0digital
@t0digital 3 жыл бұрын
не работал с .NET, надо смотреть, умеет ли он пулить соединения
@rbogdan8980
@rbogdan8980 3 жыл бұрын
@@t0digital та что-то не могу найти вменяемой информации на эту тему. Утром создал вопрос на stackoverflow, пока тишина.
@user-nq5jf2og6e
@user-nq5jf2og6e 3 жыл бұрын
Как насчет снять видео на тему программных брокеров сообщений (RabbitMQ, Kafka)? :D
@user-el9yn2kn5d
@user-el9yn2kn5d 3 жыл бұрын
@Диджитализируй!, сними ролик, пожалуйста, про отладку питоновского проекта на удаленном сервере по ssh с venv из vscode или pycharm
@zhuch9277
@zhuch9277 3 жыл бұрын
Блин я надеялся будет про репликацию
@whatrushka
@whatrushka Жыл бұрын
Нужно иметь ввиду, что при установке pgbouncer могут обновиться зависимости postgres и следовательно рестартнется postgres (что критично для консистентности данных при большой нагрузке). По возможности надо выбирать конкретный релиз, который затронет наименьшее число других пакетов. Сейчас при установке pgbouncer на это напоролся
@ruzin-kokoc
@ruzin-kokoc 3 жыл бұрын
А как сочетается PgBouncer с Асинхронным приложениями (которые разбирались в другом видео)? Если каждый асинхронный запрос требует коннекта к БД, то либо PgBouncer откроет на каждый такой запрос по соединению с БД, либо все асинхронные потоки выстроится в очередь - не?
@t0digital
@t0digital 3 жыл бұрын
Базе и pgbouncer'у пофик, какой код к нему стучится, асинхронный иди синхронный, они об этом не знают. Просто есть фреймворки и библиотеки доступа к БД, умеющие делать свой пул в каком-то виде, и есть не умеющие. Но в любом случае, даже если пул есть в библиотеке, баунсер не будет лишним, он умеет много чего, там можно ставить за ним несколько серверов баз, например, и класть нагрузку на несколько серверов, например, и тд
@ruzin-kokoc
@ruzin-kokoc 3 жыл бұрын
@@t0digital С этим согласен. Возможно этот комментарий больше относится к прошлому видео про Асинхронный код, который работал быстрее синхронного под нагрузкой. Количество коннектов к БД (через pgBouncer или напрямую) может стать проблемой. В середине видео ты поменял 'session' на 'transaction' и было бы неплохо пояснить в чем разница (поставил на паузу и посмотрел все опции, какие есть). Transaction в большинстве случаев может решать, но не всегда. В нашем приложении нам пришлось бы оставить 'session', т.к. мы используем переменные в SQL, и если два разных потока будут затирать значения друг друга - целостность развалится.
@user-rq5gg2uk3s
@user-rq5gg2uk3s 3 ай бұрын
Во всех битлиотеках под питон для постгреса есть пул, что в asyncpg , что в алхимии, psycopg
@t0digital
@t0digital 3 ай бұрын
Этого недостаточно. Много воркеров
@dmytrokorbanytskyi1586
@dmytrokorbanytskyi1586 3 жыл бұрын
спасибо, не знаете как он с амазоновскими базами работает? На Аврору его можно прицепить или там свои у них оптимизации?
@t0digital
@t0digital 3 жыл бұрын
Они пилят своё aws.amazon.com/about-aws/whats-new/2020/04/amazon-rds-proxy-with-postgresql-compatibility-preview/
@tsarevnalagushka
@tsarevnalagushka 3 жыл бұрын
Вот это поворот. Как-то даже не ожидал такого подвоха от django. Интересно, почему не сделали pool из коробки
@t0digital
@t0digital 3 жыл бұрын
тоже удивился, когда узнал об этом
@yerkebulansuleimenov9351
@yerkebulansuleimenov9351 Жыл бұрын
покажи как в АКС кластере это сделать через докер
@okopyl
@okopyl 3 жыл бұрын
Пулеры нужны только на Postgre или на любую бд?
@rbogdan8980
@rbogdan8980 3 жыл бұрын
В тех бд где не реализован MARS
@okopyl
@okopyl 3 жыл бұрын
@@rbogdan8980 буду очень благодарен если подскажете как можно нагуглить такие базы. Не получилось найти :(
@rbogdan8980
@rbogdan8980 3 жыл бұрын
@@okopyl MS SQL Server например
@rail3213
@rail3213 3 жыл бұрын
Md5 же уже устаревший стандарт хэширования. Сейчас не знаю какие актуальные, но последнее я использовал bcrypt. Если я не прав, аргументируйте, пожалуйста
@t0digital
@t0digital 3 жыл бұрын
сейчас в своем коде лучше не использовать md5, да
@user-np8nj6me7v
@user-np8nj6me7v 10 ай бұрын
то-есть, джанго, по дефолту, на каждый запрос открывает сокет с базой и ограничена 100 запросами, а если базе подключить pgbouncer которые откроет с базой 100 сокетов и будет обрабатывать входящую тысячу запросов и просто направить на него django, то теперь django будет принимать не 100 входящих запросов, а тысячу. как так? протестировал с помощью ab -n 10000 -c 200 и разницы ни какой, лучше заморочиться с кешированием на любом уровне
@dmitryshu5218
@dmitryshu5218 3 жыл бұрын
Не понимаю почему эти bouncer- концепции де факто не зашиты в бд на уровне интерфейса. Ведь в перспективе роста нагрузки на бд, резиновый пул, всегда лучше статически заданных соединений.
@anti1am3r
@anti1am3r 3 жыл бұрын
Я не уверен, что им там место. Обычно пулы соединения используются на уровне приложений. По крайней мере в java/kotlin/netcore.
@arthurgoncharuk8193
@arthurgoncharuk8193 3 жыл бұрын
Если использовать asyncpg, то pgbouncer не нужен, поскольку asyncpg имеет собственную реализацию пула соединений. Что ты думаешь на этот счет?
@t0digital
@t0digital 3 жыл бұрын
Если 1 application сервер с asyncpg кодом, и 1 сервер БД, то да, отдельный пулер не нужен, встроенного в asyncpg достаточно. Но если серверов с БД несколько или application серверов несколько, то отдельный пулер может понадобиться.
@sonicsp3149
@sonicsp3149 3 жыл бұрын
Странно, почему такая важная деталь не предусмотрена в djange из коробки?
@aquinary.
@aquinary. 3 жыл бұрын
Потому что pgbouncer - это утилита, которую ставят в систему, а не как pip пакет. То есть это не pypi дистрибутив. С таким же успехом можно спросить, почему в django из коробки не работает redis.
@Uni-Coder
@Uni-Coder 3 жыл бұрын
С mysql, похоже, в последние несколько лет везде проблемы. Я начинал разрабатывать на Rust, мне нужна была база данных, я скачал клиента mysql. Полезли такие непонятные проблемы, что аж пришлось на stackoverflow задавать вопрос. В итоге на stackoverflow мне влепили кучу лайков и сказали, что я нашел баг. Через пару дней "баг исправили". Ок, я обновился, а проект всё равно не компилится. Забил на это дело, поставил клиента postgre и всё заработало сразу. Хотя это было года 3 назад, может что-то изменилось. (Оффтоп) А ещё лет 12 назад в узких кругах был широко известен Firebird.
@Barbarin89
@Barbarin89 3 жыл бұрын
это получается что вроде очереди для бд?
@t0digital
@t0digital 3 жыл бұрын
Да, типа того
@slogic10
@slogic10 11 ай бұрын
Почему бы не использовать in-proc пул соединений? Зачем этот внешний промежуточный (и местами глюченный) софт? Почему взяли и так просто сменили режим (session -> transactional) без объяснений? Почему на серваке всего 100 подключений по умолчанию? Насколько его можно поднять?
@zakharka3938
@zakharka3938 7 күн бұрын
Если у вас только один процесс работает с базой, то можно обойтись и in-proc пулом. А если у вас несколько процессов (на одном или нескольких хостах), то лучше иметь внешний пул разделяемый между всеми процессами.
@malicboba
@malicboba 9 ай бұрын
Все никак у Postgress не дойдут руки сделать встроенный пулер соединений. А еще ведение лога под каждую БД, чтобы улучшить резервирование. Да и нормальнь сделать кросс запросы между базами.
@samirguseynov1684
@samirguseynov1684 3 жыл бұрын
а где ты такую кружку купил?
@t0digital
@t0digital 3 жыл бұрын
Hoff
@samirguseynov1684
@samirguseynov1684 3 жыл бұрын
все нашел
@samirguseynov1684
@samirguseynov1684 3 жыл бұрын
@@t0digital уже заказал, сагол)
@denisvolkov6946
@denisvolkov6946 28 күн бұрын
Жду видео "Почему тебе не нужен PgBouncer и нужен Odyssey".
FOOTBALL WITH PLAY BUTTONS ▶️ #roadto100m
00:29
Celine Dept
Рет қаралды 74 МЛН
Eccentric clown jack #short #angel #clown
00:33
Super Beauty team
Рет қаралды 22 МЛН
Indian sharing by Secret Vlog #shorts
00:13
Secret Vlog
Рет қаралды 52 МЛН
小路飞姐姐居然让路飞小路飞都消失了#海贼王  #路飞
00:47
路飞与唐舞桐
Рет қаралды 94 МЛН
Haproxy + pgbouncer и PostgreSQL
2:00
Видеоблог Аристова Евгения
Рет қаралды 103
Всё об исключениях и работе с ними в Python
30:34
Диджитализируй!
Рет қаралды 48 М.
Now He’ll Never Leave😭
0:36
Peet Montzingo
Рет қаралды 42 МЛН