https://github.com/andy-takker/pg-optimization
Homework for a PostgreSQL optimization course: OS & DB tuning, benchmarking, connection pooling, file systems, backups and replication. Hands-on labs on Raspberry Pi 4B and GCP VMs with reports and charts.
https://github.com/andy-takker/pg-optimization
backup benchmarking course-homework database linux performance-tuning pgbench postgresql raspberry-pi replication
Last synced: 24 days ago
JSON representation
Homework for a PostgreSQL optimization course: OS & DB tuning, benchmarking, connection pooling, file systems, backups and replication. Hands-on labs on Raspberry Pi 4B and GCP VMs with reports and charts.
- Host: GitHub
- URL: https://github.com/andy-takker/pg-optimization
- Owner: andy-takker
- Created: 2026-06-06T09:41:01.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2026-06-06T15:47:50.000Z (about 1 month ago)
- Last Synced: 2026-06-06T17:20:35.284Z (about 1 month ago)
- Topics: backup, benchmarking, course-homework, database, linux, performance-tuning, pgbench, postgresql, raspberry-pi, replication
- Size: 521 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# pg-optimization




Домашние задания курса по оптимизации и администрированию PostgreSQL: тюнинг ОС и СУБД, бенчмарки, пулинг соединений, файловые системы, бэкапы и репликация. Каждая работа — воспроизводимый эксперимент: стенд, методика, замеры (медианы из 3 прогонов), графики и выводы.
## Работы
| ДЗ | Тема | Стенд | Главный результат |
|---|---|---|---|
| [hw01](hw01/) | Первичная настройка ОС и PostgreSQL: бенчмарки и тюнинг | Raspberry Pi 4B | Отключение fsync: ×2.9 TPS на записи; тюнинг памяти: +17% на чтении |
| [hw02](hw02/) | Коннектинг: vanilla vs PgBouncer vs Odyssey vs HAProxy при 500+ коннектах | GCP e2-standard-4 | Пулер — не ускоритель: ваниль быстрее на быстрых запросах, но деградирует вдвое круче; оптимум пула ≈ 2×ядра |
| [hw03](hw03/) | ФС: секционирование по дням, секции на 3 дисках, COPY vs pgloader, ext4/xfs/btrfs | GCP + 3 диска | Pruning: ×49 по ключу, медленнее мимо ключа; COPY ×20 быстрее pgloader; разница ФС ≤15% |
## Ключевые находки
| | |
|---|---|
| [](hw01/) | [](hw02/) |
| **hw01:** цена fsync на медленном носителе — трёхкратная разница TPS | **hw02:** каждый хоп и каждый лишний серверный коннект стоят TPS |
| [](hw03/) | [](hw03/) |
| **hw03:** секционирование ускоряет только запросы по ключу | **hw03:** рестарт СУБД сбрасывает лишь первый из трёх уровней кеша |
## Стенды
- **Raspberry Pi 4B** (4×Cortex-A72, 8 ГБ, microSD) — узкое место IO: на нём эффекты fsync, чекпоинтов и WAL видны невооружённым глазом.
- **GCP e2-standard-4** (4 vCPU, 16 ГБ, pd-ssd) — повторяет лекционный стенд курса; для экспериментов с сотнями коннектов и пулерами.
## Инструментарий
[pgbench](https://www.postgresql.org/docs/current/pgbench.html) ·
[PgBouncer](https://www.pgbouncer.org/) ·
[Odyssey](https://github.com/yandex/odyssey) ·
[HAProxy](https://www.haproxy.org/) ·
учебная БД [«Тайские перевозки»](https://github.com/aeuge/postgres16book/tree/main/database) (~6 млн строк) ·
[pgconfigurator](https://pgconfigurator.cybertec.at/)
## Полезные материалы
- [PostgreSQL: Tuning Your Server](https://wiki.postgresql.org/wiki/Tuning_Your_PostgreSQL_Server) — стартовый чеклист от сообщества
- [Kernel Resources](https://www.postgresql.org/docs/current/kernel-resources.html) — overcommit, OOM, huge pages
- [Non-Durable Settings](https://www.postgresql.org/docs/current/non-durability.html) — официальный список «скорость в обмен на надёжность»
- [В защиту swap'а](https://habr.com/ru/companies/flant/articles/348324/) — как на самом деле работает swappiness
- [How to SCRAM with pgBouncer](https://www.crunchydata.com/blog/pgbouncer-scram-authentication-postgresql) — аутентификация через пулер