Практикум: транзакционный режим PgBouncer и асинхронный SQLAlchemy¶
Скрипты запускают PostgreSQL 17 и PgBouncer 1.25 в контейнерах одной сети Docker.
uv venv --python 3.13 .venv
uv pip install --python .venv/bin/python "sqlalchemy-foundation-kit[settings]==0.3.0" asyncpg "testcontainers[postgres]"
.venv/bin/python pgbouncer_lab.py
.venv/bin/python jit_probe.py
| Скрипт | Что измеряет |
|---|---|
pgbouncer_lab.py |
Двадцать клиентов дважды выполняют по двадцать разных запросов: напрямую к PostgreSQL, через PgBouncer с текущими настройками по умолчанию, через PgBouncer с max_prepared_statements=0 и с настройками sqlalchemy-foundation-kit. В статье также приведены результаты версии 0.2.1 до исправления. Затем значение обычного SET, выполненного через одно клиентское соединение, читается через другое |
jit_probe.py |
Результаты SHOW jit, SHOW search_path и SHOW application_name через PgBouncer с ignore_startup_parameters=jit,search_path |